color=colors[js], marker=mtypes[0], markeredgewidth=0.5, markeredgecolor="w") ax[observable].set_xlabel(r"$\Lambda$", fontsize=10) for ms, Lambda in enumerate(Lambdalist): scan['\\Lambda'] = Lambda psistuff = PsiData(scan=scan, loadsuf=psi_loadsuf, savesuf=psi_loadsuf, name=f"psivsr") ax["psi(r)"].plot(psistuff.r() / psistuff.r()[-1], psistuff.psi(), linestyle=ltypes[0], label=rf"$\Lambda={Lambda}$", color=colors[js], lw=3) ax["psi(r)"].plot(1.0, psistuff.psi()[-1], marker=mtypes[ms], color=colors[js], markeredgewidth=0.5, markeredgecolor="w") if Lambda == '27': psistuff = PsiData(scan=scan,
scan = {} scan['\\gamma_s'] = gamma scan['k_{24}'] = k24 scan['\\Lambda'] = Lambda scan['\\omega'] = omega loadsuf=["K_{33}","k_{24}","\\Lambda","\\omega","\\gamma_s"] psistuff = PsiData(scan=scan,loadsuf=loadsuf,savesuf=loadsuf) rs = psistuff.r()/8.0*1000 psis = psistuff.psi() observablestuff = ObservableData(scan=scan,loadsuf=loadsuf,savesuf=loadsuf) print(observablestuff.surfacetwist()) R = observablestuff.R()/8.0*1000 fig = plt.figure() width = 3.487 height = width fig.set_size_inches(2*width,height) ax1 = fig.add_subplot(1,2,1)
hermitedata = PsiData(scan=scan, loadsuf=loadsuf, savesuf=loadsuf, name="hermite-psivsr") fig = plt.figure() fig.set_size_inches(width, 3 * height) ax1 = fig.add_subplot(3, 1, 1) ax2 = fig.add_subplot(3, 1, 2) ax3 = fig.add_subplot(3, 1, 3) ax1.plot(psidata.r(), psidata.psi(), '.', label='actual') ax1.plot(hermitedata.r(), hermitedata.psi(), '-', label='fit') ax1.set_ylabel(r'$\psi(r)$') ax2.plot(psidata.r(), psidata.psiprime(), '.', label='actual') ax2.plot(hermitedata.r(), hermitedata.psiprime(), '-', label='fit') ax2.set_ylabel(r'$\frac{d\psi}{dr}$') ax3.plot(psidata.r(), psidata.rf_fibril(), '.', label='actual') ax3.plot(hermitedata.r(), hermitedata.rf_fibril(), '-', label='fit') ax3.legend(frameon=False) ax3.set_ylabel(r'$r\times f_{\mathrm{fibril}}(r)$') ax3.set_xlabel(r'$r$') fig.subplots_adjust(left=0.2)
ax[observable].set_ylabel(ylabel,fontsize = 10) ax[observable].plot(Lambdas[i_Lambda],ysfwd[i][i_Lambda],color=colors[js], marker=mtypes[0],markeredgewidth=0.5,markeredgecolor="w") ax[observable].set_xlabel(r"$\Lambda$",fontsize = 10) for ms,Lambda in enumerate(Lambdalist): scan['\\Lambda'] = Lambda psistuff = PsiData(scan=scan,loadsuf=psi_loadsuf,savesuf=psi_loadsuf, loadfilepath=loadfilepath,datfile=datfile, name=f"psivsr") ax["psi(r)"].plot(psistuff.r()/psistuff.r()[-1],psistuff.psi(), linestyle=ltypes[0],label=rf"$\Lambda={Lambda}$", color=colors[js],lw=3) ax["psi(r)"].plot(1.0,psistuff.psi()[-1],marker=mtypes[ms], color=colors[js],markeredgewidth=0.5,markeredgecolor="w") if Lambda == '27': psistuff = PsiData(scan=scan,loadsuf=psi_loadsuf,savesuf=psi_loadsuf, loadfilepath=loadfilepath,datfile=datfile, name=f"frustratedpsivsr") ax["psi(r)"].plot(psistuff.r()/psistuff.r()[-1],psistuff.psi(), linestyle=ltypes[1],label=rf"$\Lambda={Lambda}$", color=colors[js],lw=3) ax["psi(r)"].plot(1.0,psistuff.psi()[-1],marker=mtypes[ms+1],
scan['\\gamma_s'] = gamma scan['k_{24}'] = k24 scan['\\Lambda'] = Lambda scan['\\omega'] = omega R_units = 1000.0/10.0 # units of nano meters, with q = 10 (um)^{-1} loadsuf=["K_{33}","k_{24}","\\Lambda","\\omega","\\gamma_s"] psistuff = PsiData(scan=scan,loadsuf=loadsuf,savesuf=loadsuf, name=f"psivsr{type}") rs = psistuff.r()*R_units psis = psistuff.psi()*180/np.pi observablestuff = ObservableData(scan=scan,loadsuf=loadsuf,savesuf=loadsuf, name=f"observables{type}") print(observablestuff.surfacetwist()) R = observablestuff.R()*R_units fig = plt.figure() width = 4 height = width fig.set_size_inches(2*width,height) ax1 = fig.add_subplot(1,2,1)
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, strain=strain) ax.plot(psi.r(), psi.psi(), '-', color=colors[i], label=rf"$\epsilon={u:.3}$") ax.set_xlabel(r"$r$") ax.set_ylabel(r"$\psi(r)$") ax.legend(frameon=False) fig.subplots_adjust(left=0.2, right=0.8, bottom=0.1, top=0.95, hspace=0.05) fig.savefig(obsfwd.observable_sname("psivsr-vsstrain", plot_format="pdf")) plt.show()
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