def return_vf(): """ Return volume fraction and grains in diffraction from 'int_els_ph1.out' Results are sorted along 'psi' axis in the ascending order vdat: (nstp,nphi,npsis) ngrd: (nstp,nphi,npsis) """ from pepshkl import reader4 tdat,_psis_,_vdat_,_ngrd_ = reader4( fn='int_els_ph1.out',ndetector=2,iopt=1) ## sorting import MP.ssort as sort shsort = sort.shellSort ss = sort.ind_swap ## sort psi and find ind psis, ind = shsort(_psis_) nstp, nphi, npsis = np.shape(_vdat_) vdat = np.zeros((nstp,nphi,npsis)) ngrd = np.zeros((nstp,nphi,npsis)) for istp in range(nstp): for iphi in range(nphi): dum_v = _vdat_[istp,iphi,:][::] vdat[istp,iphi,:] = ss(dum_v[::],ind)[::] dum_n = _ngrd_[istp,iphi,:][::] ngrd[istp,iphi,:] = ss(dum_n[::],ind)[::] return vdat, ngrd
def return_vf(): """ Return volume fraction and grains in diffraction from 'int_els_ph1.out' Results are sorted along 'psi' axis in the ascending order vdat: (nstp,nphi,npsis) ngrd: (nstp,nphi,npsis) """ from pepshkl import reader4 tdat,_psis_,_vdat_,_ngrd_ = reader4( fn='int_els_ph1.out',ndetector=2,iopt=1) ## sorting import MP.ssort as sort shsort = sort.shellSort ss = sort.ind_swap ## sort psi and find ind psis, ind = shsort(_psis_) nstp, nphi, npsis = np.shape(_vdat_) vdat = np.zeros((nstp,nphi,npsis)) ngrd = np.zeros((nstp,nphi,npsis)) for istp in xrange(nstp): for iphi in xrange(nphi): dum_v = _vdat_[istp,iphi,:][::] vdat[istp,iphi,:] = ss(dum_v[::],ind)[::] dum_n = _ngrd_[istp,iphi,:][::] ngrd[istp,iphi,:] = ss(dum_n[::],ind)[::] return vdat, ngrd
def plot_sf(sff_fn='temp.sff',pmargin=0.1): """ Arguments ========= sff_fn = 'temp.sff' pmargin = 0.1 """ import numpy as np import matplotlib.pyplot as plt from pepshkl import reader4 from RS import sff_converter from rs_exp import read_IGSF from MP.lib import mpl_lib wf = mpl_lib.wide_fig sff_converter.main(fn=sff_fn,difile=None,itab=True, ieps0=4, fn_str='STR_STR.OUT') SF, IG = read_IGSF(fn=sff_fn,fn_str='STR_STR.OUT') tdat,_psis_,_vdat_,_ngrd_ = reader4( fn='int_els_ph1.out',ndetector=2,iopt=1) ## sorting import MP.ssort as sort shsort = sort.shellSort ss = sort.ind_swap ## sort psi and find ind psis, ind = shsort(_psis_) nstp, nphi, npsis = np.shape(_vdat_) vdat = np.zeros((nstp,nphi,npsis)) ngrd = np.zeros((nstp,nphi,npsis)) for istp in range(nstp): for iphi in range(nphi): dum_v = _vdat_[istp,iphi,:][::] vdat[istp,iphi,:] = ss(dum_v[::],ind)[::] dum_n = _ngrd_[istp,iphi,:][::] ngrd[istp,iphi,:] = ss(dum_n[::],ind)[::] SF.mask_vol() ## shake off all zero values SF.add_vf(vdat) ## Mask data lacking sufficient volume SF.mask_vol(pmargin=pmargin) fig=wf(nw=1,nh=1) ax=fig.axes[0] for istp in range(nstp): sign_sin2psi = np.sign(SF.psi)*np.sin(SF.psi*np.pi/180.)**2 ax.plot(sign_sin2psi,SF.vf[istp,0,:],'--') SF.plot(nbin_sin2psi=3,iopt=1) return SF,tdat,psis,vdat,ngrd
def plot_sf(sff_fn='temp.sff',pmargin=0.1): """ Arguments ========= sff_fn = 'temp.sff' pmargin = 0.1 """ import numpy as np import matplotlib.pyplot as plt from pepshkl import reader4 from RS import sff_converter from rs_exp import read_IGSF from MP.lib import mpl_lib wf = mpl_lib.wide_fig sff_converter.main(fn=sff_fn,difile=None,itab=True, ieps0=4, fn_str='STR_STR.OUT') SF, IG = read_IGSF(fn=sff_fn,fn_str='STR_STR.OUT') tdat,_psis_,_vdat_,_ngrd_ = reader4( fn='int_els_ph1.out',ndetector=2,iopt=1) ## sorting import MP.ssort as sort shsort = sort.shellSort ss = sort.ind_swap ## sort psi and find ind psis, ind = shsort(_psis_) nstp, nphi, npsis = np.shape(_vdat_) vdat = np.zeros((nstp,nphi,npsis)) ngrd = np.zeros((nstp,nphi,npsis)) for istp in xrange(nstp): for iphi in xrange(nphi): dum_v = _vdat_[istp,iphi,:][::] vdat[istp,iphi,:] = ss(dum_v[::],ind)[::] dum_n = _ngrd_[istp,iphi,:][::] ngrd[istp,iphi,:] = ss(dum_n[::],ind)[::] SF.mask_vol() ## shake off all zero values SF.add_vf(vdat) ## Mask data lacking sufficient volume SF.mask_vol(pmargin=pmargin) fig=wf(nw=1,nh=1) ax=fig.axes[0] for istp in xrange(nstp): sign_sin2psi = np.sign(SF.psi)*np.sin(SF.psi*np.pi/180.)**2 ax.plot(sign_sin2psi,SF.vf[istp,0,:],'--') SF.plot(nbin_sin2psi=3,iopt=1) return SF,tdat,psis,vdat,ngrd
def plot_sf_psis( sff_fn='temp.sff', psi_ref=[45.0, 42.4, 39.8, 37.1, 34.3, 31.5, 28.5, 25.2, 21.7, 17.5, 12.3, 0]): import numpy as np import matplotlib.pyplot as plt from pepshkl import reader4 from RS import sff_converter from rs_exp import read_IGSF from MP.lib import mpl_lib, axes_label from RS.rs import find_nearest deco = axes_label.__deco__ wf = mpl_lib.wide_fig sff_converter.main(fn=sff_fn,difile=None,itab=True, ieps0=4, fn_str='STR_STR.OUT') SF, IG = read_IGSF(fn=sff_fn,fn_str='STR_STR.OUT') tdat,_psis_,_vdat_,_ngrd_ = reader4( fn='int_els_ph1.out',ndetector=2,iopt=1) ## sorting import MP.ssort as sort shsort = sort.shellSort ss = sort.ind_swap ## sort psi and find ind psis, ind = shsort(_psis_) nstp, nphi, npsis = np.shape(_vdat_) vdat = np.zeros((nstp,nphi,npsis)) ngrd = np.zeros((nstp,nphi,npsis)) for istp in range(nstp): for iphi in range(nphi): dum_v = _vdat_[istp,iphi,:][::] vdat[istp,iphi,:] = ss(dum_v[::],ind)[::] dum_n = _ngrd_[istp,iphi,:][::] ngrd[istp,iphi,:] = ss(dum_n[::],ind)[::] ## Find only psi_ref values ## sin2psi_ref = np.sin(psi_ref*np.pi/180.)**2 inds = [] for i in range(len(psi_ref)): inds.append(find_nearest(SF.psi, psi_ref[i])) #SF.mask_vol() ## shake off all zero values fig=wf(nh=nphi,nw=len(psi_ref),iarange=True) figv=wf(nh=nphi,nw=len(psi_ref),iarange=True) fe0=wf(nh=nphi,nw=len(psi_ref),iarange=True) for iphi in range(nphi): for ipsi in range(len(psi_ref)): #ax = fig.axes[iphi+nphi*ipsi] ax = fig.axes[ipsi+len(psi_ref)*iphi] axt = figv.axes[ipsi+len(psi_ref)*iphi] aig = fe0.axes[ipsi+len(psi_ref)*iphi] if iphi==0: ax.set_title( r'$\psi= %3.1f^\circ{}$'%\ SF.psi[inds[ipsi]] ) axt.set_title( r'$\psi= %3.1f^\circ{}$'%\ SF.psi[inds[ipsi]] ) aig.set_title( r'$\psi= %3.1f^\circ{}$'%\ SF.psi[inds[ipsi]] ) if ipsi==0: ax.text(0,0,r'$\phi=%3.1f^\circ{}$'%\ SF.phi[iphi],transform=ax.transAxes) axt.text(0,0,r'$\phi=%3.1f^\circ{}$'%\ SF.phi[iphi],transform=axt.transAxes) aig.text(0,0,r'$\phi=%3.1f^\circ{}$'%\ SF.phi[iphi],transform=aig.transAxes) deco(ax,iopt=6) deco(axt,iopt=7) x = SF.flow.epsilon_vm y = SF.sf[:,iphi,inds[ipsi],0] # f11 ig = IG.ig[:,iphi,inds[ipsi]] v = vdat[:,iphi,inds[ipsi]] ax.plot(x,y*1e12,'b-o') aig.plot(x,ig,'b-o') axt.plot(x,v,'r-x') axt.set_ylim(0.,0.10) ax.set_xlim(0.,1.0) aig.set_xlim(0.,1.0) aig.set_ylim(-0.002,0.002)
def plot_sf_psis( sff_fn='temp.sff', psi_ref=[45.0, 42.4, 39.8, 37.1, 34.3, 31.5, 28.5, 25.2, 21.7, 17.5, 12.3, 0]): import numpy as np import matplotlib.pyplot as plt from pepshkl import reader4 from RS import sff_converter from rs_exp import read_IGSF from MP.lib import mpl_lib, axes_label from RS.rs import find_nearest deco = axes_label.__deco__ wf = mpl_lib.wide_fig sff_converter.main(fn=sff_fn,difile=None,itab=True, ieps0=4, fn_str='STR_STR.OUT') SF, IG = read_IGSF(fn=sff_fn,fn_str='STR_STR.OUT') tdat,_psis_,_vdat_,_ngrd_ = reader4( fn='int_els_ph1.out',ndetector=2,iopt=1) ## sorting import MP.ssort as sort shsort = sort.shellSort ss = sort.ind_swap ## sort psi and find ind psis, ind = shsort(_psis_) nstp, nphi, npsis = np.shape(_vdat_) vdat = np.zeros((nstp,nphi,npsis)) ngrd = np.zeros((nstp,nphi,npsis)) for istp in xrange(nstp): for iphi in xrange(nphi): dum_v = _vdat_[istp,iphi,:][::] vdat[istp,iphi,:] = ss(dum_v[::],ind)[::] dum_n = _ngrd_[istp,iphi,:][::] ngrd[istp,iphi,:] = ss(dum_n[::],ind)[::] ## Find only psi_ref values ## sin2psi_ref = np.sin(psi_ref*np.pi/180.)**2 inds = [] for i in xrange(len(psi_ref)): inds.append(find_nearest(SF.psi, psi_ref[i])) #SF.mask_vol() ## shake off all zero values fig=wf(nh=nphi,nw=len(psi_ref),iarange=True) figv=wf(nh=nphi,nw=len(psi_ref),iarange=True) fe0=wf(nh=nphi,nw=len(psi_ref),iarange=True) for iphi in xrange(nphi): for ipsi in xrange(len(psi_ref)): #ax = fig.axes[iphi+nphi*ipsi] ax = fig.axes[ipsi+len(psi_ref)*iphi] axt = figv.axes[ipsi+len(psi_ref)*iphi] aig = fe0.axes[ipsi+len(psi_ref)*iphi] if iphi==0: ax.set_title( r'$\psi= %3.1f^\circ{}$'%\ SF.psi[inds[ipsi]] ) axt.set_title( r'$\psi= %3.1f^\circ{}$'%\ SF.psi[inds[ipsi]] ) aig.set_title( r'$\psi= %3.1f^\circ{}$'%\ SF.psi[inds[ipsi]] ) if ipsi==0: ax.text(0,0,r'$\phi=%3.1f^\circ{}$'%\ SF.phi[iphi],transform=ax.transAxes) axt.text(0,0,r'$\phi=%3.1f^\circ{}$'%\ SF.phi[iphi],transform=axt.transAxes) aig.text(0,0,r'$\phi=%3.1f^\circ{}$'%\ SF.phi[iphi],transform=aig.transAxes) deco(ax,iopt=6) deco(axt,iopt=7) x = SF.flow.epsilon_vm y = SF.sf[:,iphi,inds[ipsi],0] # f11 ig = IG.ig[:,iphi,inds[ipsi]] v = vdat[:,iphi,inds[ipsi]] ax.plot(x,y*1e12,'b-o') aig.plot(x,ig,'b-o') axt.plot(x,v,'r-x') axt.set_ylim(0.,0.10) ax.set_xlim(0.,1.0) aig.set_xlim(0.,1.0) aig.set_ylim(-0.002,0.002)