Esempio n. 1
0
psistuff = PsiData(scan=scan,
                   loadsuf=loadsuf,
                   savesuf=loadsuf,
                   name=f"{pre}psivsr")

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

observablestuff = ObservableData(scan=scan,
                                 loadsuf=loadsuf,
                                 savesuf=loadsuf,
                                 name=f"{pre}observables")

R = observablestuff.R()
eta = observablestuff.eta()

dband = 2 * np.pi / eta

axarr[0].plot(rs, (dband - np.cos(psis)) / np.cos(psis) * 100,
              '-',
              color=colors[0])

axarr[0].set_xlabel(r'$r$', fontsize=10)
axarr[0].set_ylabel('molecular strain (\%)', fontsize=10)
axarr[0].legend(frameon=False)

fibrilstrain = FibrilStrain(psistuff, observablestuff, sfile_format='pdf')

rs, thetas = fibrilstrain.mesh_polar(grid_skip=4)
    k24 = pair[1]

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

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

    Lambdas = obsfwd.data[:, 0]

    x, y = obsfwd.surfacetwist()[1:], 2 * np.pi / obsfwd.eta()[1:]

    ax.plot(x, y, '.', color=colors[js])
    ax.plot(x[-1], y[-1], 'rs')

dums = np.linspace(0.05, 0.25, num=150, endpoint=True)
ax.plot(dums, np.cos(dums), '--')

ax.set_xlabel(r"$\psi(R)$", fontsize=10)
ax.set_ylabel(r"$2\pi/\eta$", fontsize=10)

fig.subplots_adjust(left=0.1, right=0.9, bottom=0.15, top=0.95)
fig.savefig(obsfwd.observable_sname("twistvsdband", plot_format="pdf"))

plt.show()
        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)
        """
Esempio n. 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:
Esempio n. 5
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)
Esempio n. 6
0
                        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):

    fig[observable] = plt.figure()
    ax[observable] = fig[observable].add_subplot(1, 1, 1)
        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)

        if type == "no-core":
            # incompatibility between the no core and core case so need to do this hack
            deltas = obsfwd.eta() 
        else:
            deltas = obsfwd.delta()
            
        ysfwd = [stresses,avgtwist,deltas]
        
        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}$" + ')'
Esempio n. 8
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)
        """
Esempio n. 9
0
class FibrilStrain(ReadParams):

    def __init__(self,scan_dir="",scan={},
                 loadsuf=["K_{33}","k_{24}","\\Lambda",
                          "\\omega","\\gamma_s"],
                 savesuf=["K_{33}","k_{24}","\\Lambda",
                          "\\omega","\\gamma_s"],
                 sfile_format="pdf",obsname = "observables",
                 datfile="data/input.dat",psiname = "psivsr",
                 psiloadfilepath="data",obsloadfilepath="data",
                 psisavefilepath="results",obssavefilepath="results"):
        
        ReadParams.__init__(self,datfile=datfile,
                            scan=scan,loadsuf=loadsuf,savesuf=savesuf)

        self.obsdata = ObservableData(scan=scan,loadsuf=loadsuf,savesuf=savesuf,
                                      datfile=datfile,loadfilepath=obsloadfilepath,
                                      savefilepath=obssavefilepath,
                                      scan_dir=scan_dir,name=obsname)

        self.psidata = PsiData(scan=scan,loadsuf=loadsuf,savesuf=savesuf,
                                datfile=datfile,loadfilepath=psiloadfilepath,
                                savefilepath=obssavefilepath,
                                scan_dir = scan_dir,name=psiname)

        self.scan_dir=scan_dir
        self.sfile_format=sfile_format
        self.i_R_c = self.find_R_c_index()
        return

    def find_R_c_index(self):

        i = np.argmin(np.abs(self.psidata.r()-self.obsdata.R_c()))


        return i

    def mesh_polar(self,num_azm=50,grid_skip=1):

        azm = np.linspace(0,2*np.pi,num=num_azm)

        rs,thetas = np.meshgrid(self.psidata.r()[::grid_skip],
                                azm)

        return rs,thetas

    def strain_1d(self,denom='d(r)'):

        preferred_dband = np.cos(self.psidata.psi()[self.i_R_c:])

        true_dband = 2*np.pi/self.obsdata.eta()


        if denom=='d(r)':
            dn = preferred_dband
        elif denom=='d':
            dn = true_dband
        else:
            raise ValueError(f'setting denominator of the strain equation to '
                             '"{denom}" is not valid, it must either be "d(r)" '
                             '(the default value) or "d".')

        dums = np.full(self.i_R_c,np.nan)

        s0s = (true_dband-preferred_dband)/dn

        return np.concatenate((dums,s0s)) 

    def strain_polar(self,r_mesh,denom='d(r)',grid_skip=1):

        return np.tile(self.strain_1d(denom=denom)[::grid_skip],
                       (r_mesh.shape[0],1))


    def strain_sname(self,descriptor="polar"):

        suffix = self.write_suffix(suffix_type="save")

        if self.scan_dir != "":
            sname = f"results/_{descriptor}_strain_{self.scan_dir}_{suffix}.{self.sfile_format}"
        else:
            sname = f"results/_{descriptor}_strain_{suffix}.{self.sfile_format}"

        return sname