def getDispersionGyro1(theta, eta, kx, ky, doGyro1=False): from PyPPL import PlasmaDispersion, getZero, Gamma0,Gamma1 from numpy import exp kp = np.sqrt(2.) * theta * ky b = kx**2 + ky**2 kyp = ky/kp lambda_D2 = 0. G0 = Gamma0(b) G0mG1 = Gamma0(b) - Gamma1(b) def DR_Gyro(w): zeta = w / kp Z = PlasmaDispersion(zeta) if (doGyro1): Lambda = lambda_D2 * b + exp(b) * (1. + 1. - G0) R = - (1. - eta/2. * (1. + b))*kyp * Z \ - eta * kyp * (zeta + zeta**2 * Z) + zeta * Z + 1. + Lambda else : Lambda = lambda_D2 *b + (1. - G0) + 1. R = - (1. - eta/2.)*kyp * G0 * Z + eta * kyp * b * G0mG1 * Z \ - eta * kyp * G0 * ( zeta + zeta**2 * Z) + zeta * Z * G0 + G0 + Lambda return R # Take care of extra pie due to normalization if ky > 0.33 : init = [0.05+0.05j, 0.0+0.0j, 0.1+0.1j] elif ky < 0.15 : init = [0.01+0.01j, -0.01+0.01j, 0.0+0.0j] else : init = [0.000+0.04j, 0.002+0.045j, 0.001+0.035j] return getZero(DR_Gyro, init=init)
def getDispersionGyro1(theta, eta, kx, ky, doGyro1=False): from PyPPL import PlasmaDispersion, getZero, Gamma0, Gamma1 from numpy import exp kp = np.sqrt(2.) * theta * ky b = kx**2 + ky**2 kyp = ky / kp lambda_D2 = 0. G0 = Gamma0(b) G0mG1 = Gamma0(b) - Gamma1(b) def DR_Gyro(w): zeta = w / kp Z = PlasmaDispersion(zeta) if (doGyro1): Lambda = lambda_D2 * b + exp(b) * (1. + 1. - G0) R = - (1. - eta/2. * (1. + b))*kyp * Z \ - eta * kyp * (zeta + zeta**2 * Z) + zeta * Z + 1. + Lambda else: Lambda = lambda_D2 * b + (1. - G0) + 1. R = - (1. - eta/2.)*kyp * G0 * Z + eta * kyp * b * G0mG1 * Z \ - eta * kyp * G0 * ( zeta + zeta**2 * Z) + zeta * Z * G0 + G0 + Lambda return R # Take care of extra pie due to normalization if ky > 0.33: init = [0.05 + 0.05j, 0.0 + 0.0j, 0.1 + 0.1j] elif ky < 0.15: init = [0.01 + 0.01j, -0.01 + 0.01j, 0.0 + 0.0j] else: init = [0.000 + 0.04j, 0.002 + 0.045j, 0.001 + 0.035j] return getZero(DR_Gyro, init=init)
def getDispersion(ky, parameters): from PyPPL import PlasmaDispersion, getZero, Gamma0, Gamma1 from numpy import exp mode = parameters['mode'] m_ie = parameters['m_ie'] tau = parameters['tau'] kx = parameters['kx'] kp = parameters['kp'] beta = parameters['beta'] lambda_D = parameters['lambdaD'] rhoLn = parameters['rhoLn'] rhoLT = parameters['rhoLT'] def DR_Smoly(w): k_ortho2 = kx**2 + ky**2 mass_e = 1. / m_ie # ion diamagnetic frequency w_ni = -ky / kp * rhoLn * 0.5 w_Ti = -ky / kp * rhoLT * 0.5 s_i = w b_i = (kx**2 + ky**2) / 2. w_ni = -ky / kp * rhoLn w_Ti = -ky / kp * rhoLT s_i = w / sqrt(2.) b_i = (kx**2 + ky**2) #electron w_ne = ky / kp * rhoLn w_Te = ky / kp * rhoLT s_e = w / sqrt(2. / mass_e) b_e = (kx**2 + ky**2) * mass_e # Plasma skin depth delta = tau / (beta) / m_ie #sqrt(m_ie) ######################## Dispersion relation for gyrokinetic EM mode # settings for the ions Gamma_0i = Gamma0(b_i) Gamma_1i = Gamma1(b_i) Z_i = PlasmaDispersion(s_i) l_i = 1. - (1. - w_ni / w) * Gamma_0i - w_Ti / w * (Gamma_0i - Gamma_1i) * b_i D_i = (1. - w_ni/w) * ( 1. + s_i * Z_i) * Gamma_0i + w_Ti/w * s_i * \ (0.5 * Z_i - s_i - s_i**2 * Z_i ) * Gamma_0i \ + w_Ti/w * ( 1. + s_i * Z_i) * ( Gamma_0i - Gamma_1i) * b_i # settings for the electrons Gamma_0e = Gamma0(b_e) Gamma_1e = Gamma1(b_e) Z_e = PlasmaDispersion(s_e) l_e = 1. - (1. - w_ne / w) * Gamma_0e - w_Te / w * (Gamma_0e - Gamma_1e) * b_e D_e = (1. - w_ne/w) * ( 1. + s_e * Z_e) * Gamma_0e + w_Te/w * s_e * \ (0.5 * Z_e - s_e - s_e**2 * Z_e ) * Gamma_0e \ + w_Te/w * ( 1. + s_e * Z_e) * ( Gamma_0e - Gamma_1e) * b_e ############################################################# # Standard Dispersion relation if (mode == "EM"): d = k_ortho2 * delta**2 * (l_i * tau + l_e + D_i * tau + D_e ) - 2 * s_e**2 * (D_i * tau + D_e) * (l_i * tau + l_e ) \ + k_ortho2 * lambda_D**2 * ( k_ortho2 * delta**2 - 2 * s_e**2 * (D_i * tau + D_e)) # approximation for electrons elif (mode == "ETG"): d = 1. + l_e + D_e + lambda_D**2 * k_ortho2 # bad charge is wrong sign elif (mode == "ITG"): d = 1. + l_i + D_i + lambda_D**2 * k_ortho2 # simplified ITG dispersion relation # approximation for electrons elif (mode == "ITGe"): d = l_e + D_e + tau * (l_i + D_i) else: raise NameError('No such Dispersion Relation') return d # Take care of extra pie due to normalization if (mode == "EM"): #init, solver = (-0.01 +.005j, -0.015 + 0.008j, 0.008 + 0.002j), 'muller' init, solver = (-0.1 + .05j, -0.2 + 0.08j, -0.00 + 0.02j), 'muller' if ky < 2.: init, solver = (0.02 - .02j, 0.04 + 0.04j, 0.01 - 0.0j), 'muller' else: #goes init, solver = ( -0.4 - .012j, -0.1 - 0.03j, -0.2 - 0.012j), 'muller' init, solver = (-0.4 - .012j, -0.1 - 0.03j, -0.2 - 0.012j), 'muller' else: init, solver = (0.01 + .0026j, 0.02 + 0.03j, 0.015 + 0.01j), 'muller' #init, solver = 0.01 + .03j, 'muller' return getZero(DR_Smoly, init=init, solver=solver)
def getDispersion(ky, parameters): from PyPPL import PlasmaDispersion, getZero, Gamma0,Gamma1 from numpy import exp mode = parameters['mode'] m_ie = parameters['m_ie'] tau = parameters['tau'] kx = parameters['kx'] kp = parameters['kp'] beta = parameters['beta'] lambda_D = parameters['lambdaD'] rhoLn = parameters['rhoLn'] rhoLT = parameters['rhoLT'] def DR_Smoly(w): k_ortho2 = kx**2 + ky**2 mass_e = 1./m_ie # ion diamagnetic frequency w_ni = - ky/kp * rhoLn * 0.5 w_Ti = - ky/kp * rhoLT * 0.5 s_i = w b_i = (kx**2 + ky**2)/ 2. w_ni = - ky/kp * rhoLn w_Ti = - ky/kp * rhoLT s_i = w / sqrt(2.) b_i = (kx**2 + ky**2) #electron w_ne = ky/kp * rhoLn w_Te = ky/kp * rhoLT s_e = w / sqrt(2./mass_e) b_e = (kx**2 + ky**2) * mass_e # Plasma skin depth delta = tau/(beta) / m_ie #sqrt(m_ie) ######################## Dispersion relation for gyrokinetic EM mode # settings for the ions Gamma_0i = Gamma0(b_i) Gamma_1i = Gamma1(b_i) Z_i = PlasmaDispersion(s_i) l_i = 1. - (1. - w_ni / w) * Gamma_0i - w_Ti/w * (Gamma_0i - Gamma_1i ) * b_i D_i = (1. - w_ni/w) * ( 1. + s_i * Z_i) * Gamma_0i + w_Ti/w * s_i * \ (0.5 * Z_i - s_i - s_i**2 * Z_i ) * Gamma_0i \ + w_Ti/w * ( 1. + s_i * Z_i) * ( Gamma_0i - Gamma_1i) * b_i # settings for the electrons Gamma_0e = Gamma0(b_e) Gamma_1e = Gamma1(b_e) Z_e = PlasmaDispersion(s_e) l_e = 1. - (1. - w_ne / w) * Gamma_0e - w_Te/w * (Gamma_0e - Gamma_1e ) * b_e D_e = (1. - w_ne/w) * ( 1. + s_e * Z_e) * Gamma_0e + w_Te/w * s_e * \ (0.5 * Z_e - s_e - s_e**2 * Z_e ) * Gamma_0e \ + w_Te/w * ( 1. + s_e * Z_e) * ( Gamma_0e - Gamma_1e) * b_e ############################################################# # Standard Dispersion relation if(mode == "EM"): d = k_ortho2 * delta**2 * (l_i * tau + l_e + D_i * tau + D_e ) - 2 * s_e**2 * (D_i * tau + D_e) * (l_i * tau + l_e ) \ + k_ortho2 * lambda_D**2 * ( k_ortho2 * delta**2 - 2 * s_e**2 * (D_i * tau + D_e)) # approximation for electrons elif(mode == "ETG"): d = 1. + l_e + D_e + lambda_D**2 * k_ortho2 # bad charge is wrong sign elif(mode == "ITG"): d = 1. + l_i + D_i + lambda_D**2 * k_ortho2 # simplified ITG dispersion relation # approximation for electrons elif(mode == "ITGe"): d = l_e + D_e + tau * (l_i + D_i) else: raise NameError('No such Dispersion Relation') return d # Take care of extra pie due to normalization if (mode == "EM"): #init, solver = (-0.01 +.005j, -0.015 + 0.008j, 0.008 + 0.002j), 'muller' init, solver = (-0.1 +.05j, -0.2 + 0.08j, -0.00 + 0.02j), 'muller' if ky < 2.: init, solver = ( 0.02 -.02j, 0.04 + 0.04j, 0.01 - 0.0j), 'muller' else : #goes init, solver = ( -0.4 - .012j, -0.1 - 0.03j, -0.2 - 0.012j), 'muller' init, solver = ( -0.4 - .012j, -0.1 - 0.03j, -0.2 - 0.012j), 'muller' else : init, solver = (0.01 +.0026j, 0.02 + 0.03j, 0.015 + 0.01j), 'muller' #init, solver = 0.01 + .03j, 'muller' return getZero(DR_Smoly, init=init, solver=solver)