#observable_list = ["E","R","delta","surfacetwist","stress"]

        for js, Lambda in enumerate(Lambdas):

            scan['\\Lambda'] = Lambda

            obsfwd = ObservableData(["strain"],
                                    scan_dir='scanforward',
                                    scan=scan,
                                    loadsuf=loadsuf,
                                    savesuf=savesuf)
            #obsfwd.sort_observables()
            #obsfwd.remove_duplicates()

            if len(obsfwd.data) == 6 or obsfwd.E()[0] > 1e299:
                print("bad calculation at Lambda = ", Lambda)
                Larray[js] = np.nan
                continue
            strains = obsfwd.data[:, 0]
            stresses = np.gradient(obsfwd.E(), strains)
            stresses[0] = 0.0
            youngs[js] = (stresses[1] - stresses[0]) / (strains[1] -
                                                        strains[0])

            breaks[js] = strains[np.argmax(
                stresses[stresses == stresses])] * 100
            print(Lambda, breaks[js])

        ax["youngs"].plot(Larray,
                          youngs,
Example #2
0
        scan['\\gamma_s']=gamma
        scan['k_{24}']=k24
        scan['\\omega']=omega
        scan['\\Lambda']=Lambda



        obsfwd = ObservableData(["strain","averagetwist"],scan_dir='scanforward',
                                scan=scan,loadsuf=loadsuf,
                                savesuf=savesuf)
        Req = obsfwd.R()[0]

        print(Req)

        strains = obsfwd.data[:,0]
        stresses = np.gradient(obsfwd.E(),strains)*K22*q*q/1000 # stress in kPa
        stresses[0] = 0.0
        ysfwd = [stresses,obsfwd.data[:,1],obsfwd.delta()]
        if obsfwd.E()[0] > 1e299:
            print("bad calculation at Lambda = ",Lambda)



        for j,observable in enumerate(observable_list):


            if observable == 'surfacetwist':
                ylabel = r'$<\psi>$' + ' (' + r"$\si{\radian}$" + ')'
            elif observable == "stress":
                ylabel = r"$\tilde{\sigma}$" + ' (' + r"$\si{\kilo\pascal}$" + ')'
            elif observable == 'delta':
Example #3
0
                             scan_dir='scanbackward',
                             scan=scan,
                             loadsuf=loadsuf,
                             savesuf=savesuf)

    print(k24)
    # find all spots where two distinct phases exist (two different radii values)
    bool_1 = np.isclose(obsfwd.R(), obsbkwd.R(), rtol=1e-3)
    find_j = np.where(bool_1 == False)[0]

    if find_j.size > 0:  # if two distinct phases exist, then:

        # smallest gamma value that they both exist at
        jsmall = find_j[0]

        # largest gamma value that they both exist at
        jlarge = find_j[-1]

        # find the point where the fwd E becomes larger than the bkwd E
        j = (np.argmin(
            np.abs(obsfwd.E()[jsmall:jlarge + 1] -
                   obsbkwd.E()[jsmall:jlarge + 1])) + len(obsfwd.E()[:jsmall]))

        pstr = f"{k24:.2e} {gammas[j]:.2e} {jsmall} {obsfwd.R()[j]:.2e} {obsbkwd.R()[j]:.2e}"

        obsfwd.data[j:, :] = obsbkwd.data[j:, :]

    np.savetxt(obsfwd.observable_sname("observables", plot_format="txt"),
               obsfwd.data,
               fmt='\t'.join(["%13.6e"] + ["%15.8e"] * 5))
Example #4
0
                            savesuf=savesuf)
    if not obsfwd.file_exists:
        continue

    obsfwd.sort_observables()
    obsfwd.remove_duplicates()

    Lambdas = obsfwd.data[:,0]


    #obsbkwd = ObservableData(["\\Lambda"],scan_dir='scanbackward',scan=scan,loadsuf=loadsuf,
    #                         savesuf=savesuf)
    #obsbkwd.sort_observables()


    ysfwd = [obsfwd.E(),obsfwd.R(),obsfwd.eta(),obsfwd.delta(),obsfwd.surfacetwist()]
    #ysbkwd = [obsbkwd.E(),obsbkwd.R(),obsbkwd.eta(),obsbkwd.delta(),obsbkwd.surfacetwist()]


    for i,observable in enumerate(observable_list):


        if observable == 'surfacetwist':
            ylabel = r'$\psi(R)$'
        elif observable == 'eta':
            ylabel = r'$2\pi/\eta$'
            ysfwd[i] = 2*np.pi/ysfwd[i]
        elif observable == 'delta':
            ylabel = r'$\delta/\delta_0$'
            ysfwd[i] = ysfwd[i]/np.sqrt(2/3)
        elif len(observable) > 1:
        scan['\\gamma_s'] = gamma
        scan['k_{24}'] = k24
        scan['\\omega'] = omega
        scan['\\Lambda'] = Lambda

        obsfwd = ObservableData(["strain", "averagetwist"],
                                scan_dir=f'scanforward{type}',
                                scan=scan,
                                loadsuf=loadsuf,
                                savesuf=savesuf)
        Req = obsfwd.R()[0]

        print(Req)

        strains = obsfwd.data[:, 0]
        stresses = np.gradient(obsfwd.E(),
                               strains) * K22 * q * q / 1000  # stress in kPa
        stresses[0] = 0.0
        avgtwist = obsfwd.data[:, 1]
        minindex = np.argmin(avgtwist)
        ysfwd = [stresses, avgtwist, obsfwd.delta()]
        if obsfwd.E()[0] > 1e299:
            print("bad calculation at Lambda = ", Lambda)

        for j, observable in enumerate(observable_list):

            if observable == 'surfacetwist':
                ylabel = r'$<\psi>$' + ' (' + r"$\si{\radian}$" + ')'
            elif observable == "stress":
                ylabel = r"$\tilde{\sigma}$" + ' (' + r"$\si{\kilo\pascal}$" + ')'
            elif observable == 'delta':
Example #6
0
    for js, Lambda in enumerate(Lambdas):

        scan['\\Lambda'] = Lambda
        print(Lambda)

        obsfwd = ObservableData(["strain"],
                                scan_dir='scanforward',
                                scan=scan,
                                loadsuf=loadsuf,
                                savesuf=savesuf)
        #obsfwd.sort_observables()
        #obsfwd.remove_duplicates()

        strains = obsfwd.data[:, 0]
        stresses = np.gradient(obsfwd.E(), strains)
        stresses[0] = 0.0
        #ysfwd = [obsfwd.E(),obsfwd.R(),obsfwd.delta(),obsfwd.surfacetwist(),stresses]
        ysfwd = [stresses, obsfwd.delta(), obsfwd.surfacetwist()]
        if obsfwd.E()[0] > 1e299:
            print("bad calculation at Lambda = ", Lambda)
            continue

        for i, observable in enumerate(observable_list):

            if observable == 'surfacetwist':
                ylabel = r'$\psi(R)$'
            elif observable == "stress":
                ylabel = r"$\sigma$"
            elif observable == 'delta':
                ylabel = r'$\delta/\delta_0$'
        scan = {}
        scan['\\Lambda'] = Lambda
        scan['k_{24}'] = k24
        scan['\\omega'] = omega

        obsfwd = ObservableData(["\\gamma_s"],
                                scan_dir='scanforward',
                                scan=scan,
                                loadsuf=loadsuf,
                                savesuf=savesuf)

        gammas = obsfwd.data[:, 0]

        ysfwd = [
            obsfwd.E(),
            obsfwd.R(),
            obsfwd.eta(),
            obsfwd.delta(),
            obsfwd.surfacetwist()
        ]
        """
        obsbkwd = ObservableData(["\\gamma_s"],scan_dir='scanbackward',scan=scan,loadsuf=loadsuf,
                                 savesuf=savesuf)

        ysbkwd = [obsbkwd.R(),obsbkwd.surfacetwist()]


        g_small,g_large,g_eq = find_metastable(obsfwd.R(),obsbkwd.R(),
                                               obsfwd.E(),obsbkwd.E())
Example #8
0
obsfwd = ObservableData(["\\Lambda"],
                        scan_dir='scanforward',
                        scan=scan,
                        loadsuf=loadsuf,
                        savesuf=savesuf)
obsbkwd = ObservableData(["\\Lambda"],
                         scan_dir='scanbackward',
                         scan=scan,
                         loadsuf=loadsuf,
                         savesuf=savesuf)
obsbkwd.sort_observables()

observable_list = ['E', 'R', 'eta', 'delta', 'surfacetwist']
ysfwd = [
    obsfwd.E(),
    obsfwd.R(),
    obsfwd.eta(),
    obsfwd.delta(),
    obsfwd.surfacetwist()
]
ysbkwd = [
    obsbkwd.E(),
    obsbkwd.R(),
    obsbkwd.eta(),
    obsbkwd.delta(),
    obsbkwd.surfacetwist()
]

for i, observable in enumerate(observable_list):
Example #9
0
                            scan_dir='scanforward',
                            scan=scan,
                            loadsuf=loadsuf,
                            savesuf=savesuf)

    Lambdas = obsfwd.data[:, 0]

    if js == 1:
        obsbkwd = ObservableData(["\\Lambda"],
                                 scan_dir='scanbackward',
                                 scan=scan,
                                 loadsuf=loadsuf,
                                 savesuf=savesuf)
        obsbkwd.sort_observables()

        ysbkwd = [obsbkwd.E(), obsbkwd.eta(), obsbkwd.delta()]

    ysfwd = [obsfwd.E(), obsfwd.eta(), obsfwd.delta()]

    for i, observable in enumerate(observable_list):

        if observable == 'surfacetwist':
            ylabel = r'$\psi(R)$'
        elif observable == 'eta':
            ylabel = r'$2\pi/\eta$'
            ysfwd[i] = 2 * np.pi / ysfwd[i]
            if js == 1:
                ysbkwd[i] = 2 * np.pi / ysbkwd[i]
        elif observable == 'delta':
            ylabel = r'$\delta/\delta_0$'
            ysfwd[i] = ysfwd[i] / np.sqrt(2 / 3)
Example #10
0
    K33 = 30.0


    scan = {}
    scan['\\gamma_s'] = str(gamma)
    scan['k_{24}'] = str(k24)
    scan['\\Lambda'] = str(Lambda)
    scan['\\omega'] = str(omega)
    scan['K_{33}'] = str(K33)

    observablestuff = ObservableData(scan=scan,loadsuf=loadsuf,savesuf=loadsuf,
                                     name=f"observables_frustrated")

    delta = observablestuff.delta()
    eta = observablestuff.eta()
    E0 = observablestuff.E()

    print(delta,eta,E0)


    psistuff = PsiData(scan=scan,loadsuf=loadsuf,savesuf=savesuf,name=f"psivsr_frustrated",
                       sfile_format="pdf")

    rs = psistuff.r()
    psis = psistuff.psi()
    psiprimes = psistuff.psiprime()

    R0s = np.copy(rs[:len(rs)-10:5])

    Es = np.copy(R0s)*0
    strains = np.array([0.0, 0.01, 0.02, 0.03], float)

    colors = sns.color_palette("hls", len(strains))

    fig = plt.figure()
    fig.set_size_inches(width, height)

    ax = fig.add_subplot(1, 1, 1)

    obsfwd = ObservableData(["strain"],
                            scan_dir='scanforward',
                            scan=scan,
                            loadsuf=loadsuf,
                            savesuf=savesuf)

    if obsfwd.E()[0] > 1e299:
        print("bad calculation at Lambda = ", Lambda)

    for i, u in enumerate(strains):

        if i == 0:

            strain = None

        else:

            strain = str(u)

        psi = PsiData(scan=scan,
                      loadsuf=loadsuf,
                      savesuf=savesuf,
Example #12
0
    K_22 = 6  # pN

    for i, observable in enumerate(observable_list):

        ax[observable] = fig.add_subplot(3, 1, i + 1)

    obsfwd = ObservableData(["strain", "averagetwist"],
                            scan_dir='scanforward',
                            scan=scan,
                            loadsuf=loadsuf,
                            savesuf=savesuf)
    Req = obsfwd.R()[0] / q * 1000  # nm

    strains = obsfwd.data[:, 0]
    stresses = np.gradient(obsfwd.E(), strains) * K_22 * q * q / 1e3  # in kPa
    stresses[0] = 0.0

    ysfwd = [stresses, obsfwd.surfacetwist(), obsfwd.delta()]
    if obsfwd.E()[0] > 1e299:
        print("bad calculation at Lambda = ", Lambda)

    for i, observable in enumerate(observable_list):

        if observable == 'surfacetwist':
            ylabel = r'$\psi(R)$' + ' (' + r'$\si{\radian}$' + ')'
        elif observable == "stress":
            ylabel = r"$\sigma$" + ' (' + r'$\si{\kilo\pascal}$' + ')'
        elif observable == 'delta':
            ylabel = r'$\delta/\delta_0$'
            ysfwd[i] = ysfwd[i] / np.sqrt(2 / 3)
Example #13
0
        ax[observable] = fig[observable].add_subplot(1,1,1)


    for j,Lambda in enumerate(Lambdas):

        scan = {}
        scan['\\Lambda']=Lambda
        scan['k_{24}']=k24
        scan['\\omega']=omega

        obsfwd = ObservableData(["\\gamma_s"],scan_dir='scanforward',scan=scan,loadsuf=loadsuf,
                                savesuf=savesuf)

        gammas = obsfwd.data[:,0]

        ysfwd = [obsfwd.E(),obsfwd.R(),obsfwd.eta(),
                 obsfwd.delta(),obsfwd.surfacetwist()]

        """
        obsbkwd = ObservableData(["\\gamma_s"],scan_dir='scanbackward',scan=scan,loadsuf=loadsuf,
                                 savesuf=savesuf)

        ysbkwd = [obsbkwd.R(),obsbkwd.surfacetwist()]


        g_small,g_large,g_eq = find_metastable(obsfwd.R(),obsbkwd.R(),
                                               obsfwd.E(),obsbkwd.E())

        print(g_small,g_large,g_eq)
        """
        ax[observable] = fig.add_subplot(2,1,i+1)

    for kj,Lambda in enumerate(['1.0','10.0']):

        scan['\\Lambda']=Lambda

        for js,omega in enumerate(omegas):

            scan['\\omega']=omega
            print(omega)

            obsfwd = ObservableData(["strain"],scan_dir='scanforward',scan=scan,loadsuf=loadsuf,
                                    savesuf=savesuf)

            if not isinstance(obsfwd.E(),np.ndarray):

                ys_arrays["stress_max"][js]=0.0
                ys_arrays["strain_max"][js]=0.0
                continue

            if obsfwd.E()[0] > 1e299:
                print("bad calculation at Lambda = ",Lambda)
                continue

            strains = obsfwd.data[:,0]
            stresses = np.gradient(obsfwd.E(),strains)
            stresses[0] = 0.0


            max_index = np.argmax(stresses)