electromagnetics

This package contains the methods for calculating the electromagnetic properties of a cpw resonator. Of particular interest is the spatial distribution of the vacuum current fluctuations for a cpw of a given geometry.

This program wil calculate the electromagnetic properties of cpw resonators

class qsd.electromagnetics.cpw.CPW(x, l, w, t, pen, Z, omega)

CPW contains the methods for calculating electromagntic properties of cpw resonator

E()

Calculates electroc field of supercodnuctor

J()

Calculates un-normalized vacuum current density

conductivity()

Calculates conductivity of superconductor

current(*args, **kwargs)

Calculates critical current

normalize_J()

Normalizes vacuum current density

resistance()

calculates resistance of superconductor

resistivity()

Calculates resistivity of superconductor

cpw

#!/usr/bin/env python

""" This program wil calculate the electromagnetic properties of cpw resonators
"""

import numpy as np
import csv
from scipy import constants as sp

class CPW:
    """
    CPW contains the methods for calculating electromagntic properties of cpw resonator
    """
    version = '0.1'

    def __init__(self,x,l,w,t,pen,Z,omega):
        """
        Initializes the cpw geometry, penetration depth, Z, resonant frequency, and voltage

        :type x: float
        :param x: width of substrate

        :type l: int
        :param l: length of superconductor

        :type w: int
        :param w: width of superconductor

        :type t: int
        :param t: thickness of superconductor

        :type pen: int
        :param pen: penetration depth of superconductor

        :type Z: int
        :param Z: characteristic impedance or cpw

        :type omega: int
        :param omega: resonant frequency

        :type V: int
        :param l: voltage

        """
        self.x = x
        self.l = l
        self.w = w
        self.t = t
        self.pen = pen
        self.Z = Z
        self.omega = omega
        self.V = 1

    def J(self):
        """
        Calculates un-normalized vacuum current density
        """
        ans = []
        for i in self.x:
            if abs(i) > self.w/2.:
                ans.append(0)
            elif abs(i) == self.w/2.:
                ans.append(1.165/self.pen*(self.w*self.t)**.5)
            elif abs(i) < self.w/2. and abs(i) > self.w/2. - self.pen**2/(2*self.t):
                ans.append(1.165/self.pen*(self.w*self.t)**.5*np.exp(-(self.w/2. - abs(i))*self.t/self.pen**2))
            else:
                ans.append((1 - (2*abs(i)/self.w)**2)**-.5)
        return np.asarray(ans)

    def normalize_J(self):
        """
        Normalizes vacuum current density
        """
        #normalise
        Js = self.J()
        dI = self.omega*(sp.hbar/(2*self.Z))**.5
        dx = self.x[1] - self.x[0]
        Jnorm = dI*Js/(self.t*dx*np.sum(Js))
        return Jnorm

    def current(self,*args,**kwargs):
        """
        Calculates critical current
        """
        norm = kwargs.get('norm','yes')

        if norm=='yes':
            I = self.l * self.normalize_J()
        else:
            I = self.l * self.J()
        return I

    def resistance(self):
        """
        calculates resistance of superconductor
        """
        R = self.V / self.current()
        return R

    def resistivity(self):
        """
        Calculates resistivity of superconductor
        """
        A = self. w * self.t # Cross-sectional area of cpw
        rho = self.resistance() * (A / self.l)
        return rho

    def conductivity(self):
        """
        Calculates conductivity of superconductor
        """
        G = 1/self.resistivity()
        return G

    def E(self):
        """
        Calculates electroc field of supercodnuctor
        """
        E = self.normalize_J() * self.conductivity()
        return E