Пример #1
0
def residualFunc(pars, hPocket, ePocket, rzz_0, rzz_15, rzz_30, rzz_45):

    h_gamma_0 = pars["h_gamma_0"].value
    e_gamma_0 = pars["e_gamma_0"].value
    gamma_dos = pars["gamma_dos"].value
    gamma_k = pars["gamma_k"].value
    power = pars["power"].value
    mu = pars["mu"].value
    M = pars["M"].value

    print("h_gamma_0 = ", h_gamma_0)
    print("e_gamma_0 = ", e_gamma_0)
    print("gamma_dos = ", gamma_dos)
    print("gamma_k = ", gamma_k)
    print("power = ", power)
    print("mu = ", mu)
    print("M = ", M)

    power = int(power)
    if power % 2 == 1:
        power += 1
    start_total_time = time.time()

    # hPocket
    hPocket.mu = mu
    hPocket.M = M
    hPocket.discretize_FS(mesh_xy_rough=501)
    hPocket.dos_k_func()
    hPocket.doping()
    hPocketCondObject = Conductivity(hPocket, Bamp=45, gamma_0=h_gamma_0,
                              gamma_k=gamma_k, power=power, gamma_dos=gamma_dos)

    # ePocket
    ePocket.mu = mu
    ePocket.M = M
    ePocket.discretize_FS(mesh_xy_rough=501)
    ePocket.dos_k_func()
    ePocket.doping()
    ePocketCondObject = Conductivity(ePocket, Bamp=45, gamma_0=e_gamma_0,
                              gamma_k=gamma_k, power=power, gamma_dos=gamma_dos)

    ADMRObject = ADMR([hPocketCondObject, ePocketCondObject])
    ADMRObject.Btheta_array = Btheta_array
    ADMRObject.runADMR()
    print("ADMR time : %.6s seconds \n" % (time.time() - start_total_time))

    diff_0 = rzz_0 - ADMRObject.rzz_array[0, :]
    diff_15 = rzz_15 - ADMRObject.rzz_array[1, :]
    diff_30 = rzz_30 - ADMRObject.rzz_array[2, :]
    diff_45 = rzz_45 - ADMRObject.rzz_array[3, :]

    return np.concatenate((diff_0, diff_15, diff_30, diff_45))
Пример #2
0
    def produce_ADMR_object(self):
        ## Update bandObject
        for param_name in self.ranges_dict.keys():
            if hasattr(self.bandObject, param_name):
                setattr(self.bandObject, param_name,
                        self.member_dict[self.data_T_list[0]][param_name])
            if param_name in self.bandObject._band_params.keys():
                self.bandObject[param_name] = self.member_dict[
                    self.data_T_list[0]]["band_params"][param_name]

        ## Adjust the doping if need be
        if self.member_dict[
                self.data_T_list[0]]["fixdoping"] >= -1 and self.member_dict[
                    self.data_T_list[0]]["fixdoping"] <= 1:
            self.bandObject.setMuToDoping(
                self.member_dict[self.data_T_list[0]]["fixdoping"])
            for T in self.data_T_list:
                self.member_dict[T]["band_params"]["mu"] = self.bandObject[
                    "mu"]

        self.bandObject.runBandStructure()

        for T in self.data_T_list:
            self.condObject_dict[T] = Conductivity(self.bandObject,
                                                   **self.member_dict[T])
            self.admrObject_dict[T] = ADMR([self.condObject_dict[T]],
                                           **self.member_dict[T])
            self.admrObject_dict[T].Btheta_array = self.Btheta_dict[T]
            self.admrObject_dict[T].Bphi_array = self.Bphi_dict[T]
def computeAMROpoints(B_amp,B_phi_a,B_theta_a):
    amroListForPhi = []
    for i in range(B_phi_a.shape[0]):
        amroListForTheta = []
        for j in range(B_theta_a.shape[0]):
            dataPoint = Conductivity(band, B_amp, B_phi_a[i], B_theta_a[j], gamma_0=15, gamma_k=0, power=12)
            dataPoint.solveMovementFunc()
            dataPoint.chambersFunc(i = 2, j = 2)
            amroListForTheta.append(dataPoint)
        amroListForPhi.append(amroListForTheta)

    return amroListForPhi
    def test_conductivity_T_0_B_0(self):
        """T = 0 & B = 0"""

        bandObject = BandStructure(**TestTransport.params)

        ## Discretize
        bandObject.doping()
        bandObject.discretize_FS()
        bandObject.dos_k_func()

        ## Conductivity
        condObject = Conductivity(bandObject, **TestTransport.params)
        condObject.Bamp = 0
        condObject.runTransport()
        condObject.chambersFunc(i=2, j=2)

        self.assertEqual(np.round(condObject.sigma[2, 2], 3), 18817.908)
Пример #5
0
def residualFunc(pars, bandObject, rzz_0, rzz_15, rzz_30, rzz_45):

    gamma_0 = pars["gamma_0"].value
    gamma_dos = pars["gamma_dos"].value
    gamma_k = pars["gamma_k"].value
    power = pars["power"].value
    mu = pars["mu"].value
    M = pars["M"].value

    print("gamma_0 = ", gamma_0)
    print("gamma_dos = ", gamma_dos)
    print("gamma_k = ", gamma_k)
    print("power = ", power)
    print("mu = ", mu)
    print("M = ", M)

    power = int(power)
    if power % 2 == 1:
        power += 1
    start_total_time = time.time()
    bandObject.mu = mu
    bandObject.M = M
    bandObject.discretize_FS()
    bandObject.dos_k_func()
    bandObject.doping()
    condObject = Conductivity(bandObject,
                              Bamp=45,
                              gamma_0=gamma_0,
                              gamma_k=gamma_k,
                              power=power,
                              gamma_dos=gamma_dos)
    ADMRObject = ADMR([condObject])
    ADMRObject.Btheta_array = Btheta_array
    ADMRObject.runADMR()
    print("ADMR time : %.6s seconds" % (time.time() - start_total_time))

    diff_0 = rzz_0 - ADMRObject.rzz_array[0, :]
    diff_15 = rzz_15 - ADMRObject.rzz_array[1, :]
    diff_30 = rzz_30 - ADMRObject.rzz_array[2, :]
    diff_45 = rzz_45 - ADMRObject.rzz_array[3, :]

    return np.concatenate((diff_0, diff_15, diff_30, diff_45))
    def test_conductivity_T(self):
        """T > 0"""

        params = deepcopy(TestTransport.params)
        params["T"] = 25  # in K

        bandObject = BandStructure(**params)

        ## Discretize
        bandObject.doping()
        bandObject.discretize_FS()
        bandObject.dos_k_func()

        ## Conductivity
        condObject = Conductivity(bandObject, **params)
        condObject.runTransport()
        condObject.chambersFunc(i=2, j=2, coeff_name="sigma")

        self.assertEqual(np.round(condObject.sigma[2, 2], 3), 17946.592)
## Export final parameters from the fit
gamma_0 = out.params["gamma_0"].value
gamma_dos = out.params["gamma_dos"].value
gamma_k = out.params["gamma_k"].value
power = out.params["power"].value
mu = out.params["mu"].value

## Compute ADMR with final parameters from the fit
bandObject.mu = mu
bandObject.discretize_FS()
bandObject.dos_k_func()
bandObject.doping()
condObject = Conductivity(bandObject,
                          Bamp=45,
                          gamma_0=gamma_0,
                          gamma_k=gamma_k,
                          power=power,
                          gamma_dos=gamma_dos)
ADMRObject = ADMR([condObject])
ADMRObject.Btheta_array = Btheta_array
ADMRObject.runADMR()
ADMRObject.fileADMR(folder="data_NdLSCO_0p21")

#<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<#
## Figures ////////////////////////////////////////////////////////////////#
#>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>#

#///// RC Parameters //////#
mpl.rcdefaults()
mpl.rcParams['font.size'] = 24.  # change the size of the font in every figure
mpl.rcParams['font.family'] = 'Arial'  # font Arial in every figure
Пример #8
0
h_gamma_0 = out.params["h_gamma_0"].value
e_gamma_0 = out.params["e_gamma_0"].value
gamma_dos = out.params["gamma_dos"].value
gamma_k = out.params["gamma_k"].value
power = out.params["power"].value
mu = out.params["mu"].value
M = out.params["M"].value

## Compute ADMR with final parameters from the fit
# hPocket
hPocket.mu = mu
hPocket.M = M
hPocket.discretize_FS()
hPocket.dos_k_func()
hPocket.doping()
hPocketCondObject = Conductivity(hPocket, Bamp=45, gamma_0=h_gamma_0,
                                 gamma_k=gamma_k, power=power, gamma_dos=gamma_dos)

# ePocket
ePocket.mu = mu
ePocket.M = M
ePocket.discretize_FS()
ePocket.dos_k_func()
ePocket.doping()
ePocketCondObject = Conductivity(ePocket, Bamp=45, gamma_0=e_gamma_0,
                                 gamma_k=gamma_k, power=power, gamma_dos=gamma_dos)

ADMRObject = ADMR([hPocketCondObject, ePocketCondObject])
ADMRObject.Btheta_array = Btheta_array
ADMRObject.runADMR()
ADMRObject.fileADMR(folder="data_NdLSCO_0p21")
Пример #9
0
                    mu=-0.636,
                    numberOfKz=7,
                    mesh_ds=1 / 80)

bandObject.discretize_FS()
bandObject.dos_k_func()
bandObject.doping()

# # bandObject.figMultipleFS2D()
# # bandObject.figDiscretizeFS2D()

## Conductivity Object
condObject = Conductivity(bandObject,
                          Bamp=Bmin,
                          Bphi=0,
                          Btheta=0,
                          gamma_0=1,
                          gamma_k=0,
                          power=0)
condObject.Ntime = 2000

## Empty arrays
rhoxx_array = np.empty_like(B_array, dtype=np.float64)
rhoxy_array = np.empty_like(B_array, dtype=np.float64)
RH_array = np.empty_like(B_array, dtype=np.float64)

for i, B in enumerate(B_array):

    condObject.Bamp = B
    condObject.solveMovementFunc()
    condObject.chambersFunc(0, 0)
Пример #10
0
                ")",
}

## ONE BAND Horio et al. /////////////////////////////////////////////////////////
bandObject = BandStructure(**params)

## Discretize
bandObject.setMuToDoping(0.30)
bandObject.runBandStructure(printDoping=True)

# bandObject.mc_func()
# print("mc = " + "{:.3f}".format(bandObject.mc))
# bandObject.figDiscretizeFS2D()
# bandObject.figMultipleFS2D()

## Conductivity
condObject = Conductivity(bandObject, **params)
# condObject.figdfdE()
# condObject.runTransport()
# condObject.omegac_tau_func()
# print("omega_c * tau = " + "{:.3f}".format(condObject.omegac_tau))
# condObject.figScatteringPhi(kz=0)
# condObject.solveMovementFunc()
# condObject.figCumulativevft()

## ADMR
amro1band = ADMR([condObject], **params)
amro1band.runADMR()
amro1band.fileADMR(folder="sim/Tl2201_Tc_20K/")
amro1band.figADMR(folder="sim/Tl2201_Tc_20K/")
Пример #11
0
ePocket.bandname = "ePocket"

## Discretize >>>>>>>>>>>>>>>>>>>>>>>#
hPocket.discretize_FS(mesh_xy_rough=2001)
hPocket.dos_k_func()
hPocket.doping()

ePocket.discretize_FS(mesh_xy_rough=2001)
ePocket.dos_k_func()
ePocket.doping()

## Conductivity Object ---------------
hPocketCondObject = Conductivity(hPocket,
                                 Bamp=45,
                                 gamma_0=15,
                                 gamma_k=0,
                                 power=12,
                                 gamma_dos_max=0,
                                 factor_arcs=1)
hPocketCondObject.Ntime = 1000  # better for high magnetic field values

## Transport coeffcients -------------

## Empty arrays
rhoxx_array = np.empty_like(B_array, dtype=np.float64)
rhoxy_array = np.empty_like(B_array, dtype=np.float64)
rhozz_array = np.empty_like(B_array, dtype=np.float64)
RH_array = np.empty_like(B_array, dtype=np.float64)

for i, B in enumerate(B_array):
# }

## Create Bandstructure object
bandObject = BandStructure(**params)

## Discretize Fermi surface
# bandObject.setMuToDoping(0.15)
# print(bandObject["mu"])
bandObject.runBandStructure(printDoping=True)
# bandObject.mc_func()
# print("mc = " + "{:.3f}".format(bandObject.mc))
# bandObject.figMultipleFS2D()
# # bandObject.figDiscretizeFS2D()

# ## Compute conductivity
condObject = Conductivity(bandObject, **params)
condObject.runTransport()
# condObject.figScatteringColor()
condObject.omegac_tau_func()
print("omega_c * tau = " + "{:.3f}".format(condObject.omegac_tau))
# condObject.figOnekft()
# # condObject.figScatteringPhi(kz=0)
# # condObject.figScatteringPhi(kz=pi/bandObject.c)
# # condObject.figScatteringPhi(kz=2*pi/bandObject.c)

# sigmaxx_h = condObject.chambersFunc(0,0)
# sigmaxy_h = condObject.chambersFunc(0,1)
# sigmazz_h = condObject.chambersFunc(2,2)
# print("1band-------------")
# print("rhoxx =", 1/sigmaxx_h*1e8, "uOhm.cm")
# print("rhozz =", 1/sigmazz_h*1e5, "mOhm.cm")
Пример #13
0
## Empty arrays
rhoxx_array = np.empty_like(T_array, dtype=np.float64)
rhoxy_array = np.empty_like(T_array, dtype=np.float64)
RH_array = np.empty_like(T_array, dtype=np.float64)
rhozz_array = np.empty_like(T_array, dtype=np.float64)
rhozy_array = np.empty_like(T_array, dtype=np.float64)

for i, T in enumerate(T_array):

    g0 = scattering[T][0]
    gk = scattering[T][1]
    power = scattering[T][2]
    gdos_max = scattering[T][3]

    ## rho_xy, rho_xx velocity
    condObject = Conductivity(bandObject, Bamp=B, Bphi=0,
                          Btheta=0, gamma_0=g0, gamma_k=gk, power=power, gamma_dos_max=gdos_max)
    condObject.Ntime = 1000 # better for high magnetic field values

    condObject.solveMovementFunc()
    condObject.chambersFunc(0, 0)
    sigma_xx = condObject.sigma[0, 0]
    condObject.chambersFunc(0, 1)
    sigma_xy = condObject.sigma[0, 1]
    condObject.chambersFunc(2, 2)
    sigma_zz = condObject.sigma[2, 2]

    ## rho_zy velocity
    condObject = Conductivity(bandObject, Bamp=B, Bphi=0,
                          Btheta=90, gamma_0=g0, gamma_k=gk, power=power, gamma_dos_max=gdos_max)
    condObject.Ntime = 1000 # better for high magnetic field values
Пример #14
0
    "res_xy": 20,
    "res_z": 7,
    "T": 0,
    "gamma_0": 3.6,
    "gamma_k": 0,
    "gamma_dos_max": 0,
    "power": 12,
    "factor_arcs": 1,
}

## BandObject ------------------------
bandObject = BandStructure(**params)
bandObject.runBandStructure()

## Conductivity Object ---------------
condObject = Conductivity(bandObject, Bamp=Bmin,
                          **params)  # T = 20K, p = 0.24 from fit ADMR
condObject.Ntime = 1000  # better for high magnetic field values
# condObject.epsilon_N = 10

## Transport coeffcients -------------

## Empty arrays
rhoxx_array = np.empty_like(B_array, dtype=np.float64)
rhoxy_array = np.empty_like(B_array, dtype=np.float64)
rhozz_array = np.empty_like(B_array, dtype=np.float64)
RHa_array = np.empty_like(B_array, dtype=np.float64)
RHc_array = np.empty_like(B_array, dtype=np.float64)

for i, B in enumerate(B_array):

    condObject.Bamp = B