def main(ngrains=100, sigma=15., c2a=1.6235, mu=0., prc='cst', isc=False, tilt_1=0., tilts_about_ax1=0., tilts_about_ax2=0.): """ Arguments ========= ngrains = 100 sigma = 15. c2a = 1.6235 prc = 'cst' or 'ext' tilts_about_ax1 = 0. -- Systematic tilting abount axis 1 tilts_about_ax2 = 0. -- Systematic tilting abount axis 2 tilt_1 = 0. -- Tilt in the basis pole. (systematic tilting away from ND) """ if isc: h = mmm() else: h = np.array([np.identity(3)]) gr = [] for i in xrange(ngrains): dth = random.uniform(-180., 180.) if prc == 'cst': g = gen_gr_fiber(th=dth, sigma=sigma, mu=mu, tilt=tilt_1, iopt=0) # Basal//ND elif prc == 'ext': g = gen_gr_fiber(th=dth, sigma=sigma, mu=mu, tilt=tilt_1, iopt=1) # Basal//ED else: raise IOError, 'Unexpected option' for j in xrange(len(h)): temp = np.dot(g, h[j].T) ## tilts_about_ax1 if abs(tilts_about_ax1) > 0: g_tilt = rd_rot(tilts_about_ax1) temp = np.dot(temp, g_tilt.T) ## tilts_about_ax2? elif abs(tilts_about_ax2) > 0: g_tilt = td_rot(tilts_about_ax2) temp = np.dot(temp, g_tilt.T) elif abs(tilts_about_ax2) > 0 and abs(tilts_about_ax2) > 0: raise IOError, 'One tilt at a time is allowed.' phi1, phi, phi2 = euler(a=temp, echo=False) gr.append([phi1, phi, phi2, 1. / ngrains]) mypf = upf.polefigure(grains=gr, csym='hexag', cdim=[1, 1, c2a]) mypf.pf_new(poles=[[0, 0, 0, 2], [1, 0, -1, 0]], cmap='jet', ix='TD', iy='RD') return np.array(gr)
def to909090(gr): """ Reduce a grain in the full range angules to 90x90x90 cube """ # if gr[0]<0.: # gr[0] = 360 + gr[0] from sym import __mmm__ as mmm from sym import cubic sam = mmm() # orthorhombic sample symmetry crm = cubic() # cubic crystal symmetry a = euler(ph=gr[0], th=gr[1], tm=gr[2], echo=False) # ca<-sa mats = [] newa = [] for i in range(len(sam)): dum = np.dot(a, sam[i].T) # ca<-sa H for j in range(len(crm)): nnewa = np.dot(crm[j], dum) # H_ca ca<-sa H_sa mats.append(nnewa) #print len(mats) eul_angs = [] n = 0 for i in range(len(mats)): angs = euler(a=mats[i], echo=False) if all(angs[k]<=90. for k in range(3)) and \ all(angs[k]>=0. for k in range(3)): n = n + 1 #print angs eul_angs.append(angs) temp_gr = [] for i in range(len(eul_angs)): temp_gr.append([eul_angs[i][0], eul_angs[i][1], eul_angs[i][2]]) temp_gr = np.around(temp_gr, decimals=3) temp_gr = unique2d(np.array(temp_gr)) new_gr = [] for i in range(len(temp_gr)): dgr = [temp_gr[i][0],temp_gr[i][1],temp_gr[i][2],gr[-1]/len(temp_gr)] new_gr.append(dgr) return np.array(new_gr)
def main(ngrains=100,sigma=15.,c2a=1.6235,mu=0., prc='cst',isc=False,tilt_1=0., tilts_about_ax1=0.,tilts_about_ax2=0.): """ Arguments ========= ngrains = 100 sigma = 15. c2a = 1.6235 prc = 'cst' or 'ext' tilts_about_ax1 = 0. -- Systematic tilting abount axis 1 tilts_about_ax2 = 0. -- Systematic tilting abount axis 2 tilt_1 = 0. -- Tilt in the basis pole. (systematic tilting away from ND) """ if isc: h = mmm() else: h=np.array([np.identity(3)]) gr = [] for i in xrange(ngrains): dth = random.uniform(-180., 180.) if prc=='cst': g = gen_gr_fiber(th=dth,sigma=sigma,mu=mu,tilt=tilt_1,iopt=0) # Basal//ND elif prc=='ext': g = gen_gr_fiber(th=dth,sigma=sigma,mu=mu,tilt=tilt_1,iopt=1) # Basal//ED else: raise IOError, 'Unexpected option' for j in xrange(len(h)): temp = np.dot(g,h[j].T) ## tilts_about_ax1 if abs(tilts_about_ax1)>0: g_tilt = rd_rot(tilts_about_ax1) temp = np.dot(temp,g_tilt.T) ## tilts_about_ax2? elif abs(tilts_about_ax2)>0: g_tilt = td_rot(tilts_about_ax2) temp = np.dot(temp,g_tilt.T) elif abs(tilts_about_ax2)>0 and abs(tilts_about_ax2)>0: raise IOError, 'One tilt at a time is allowed.' phi1,phi,phi2 = euler(a=temp, echo=False) gr.append([phi1,phi,phi2,1./ngrains]) mypf=upf.polefigure(grains=gr,csym='hexag',cdim=[1,1,c2a]) mypf.pf_new(poles=[[0,0,0,2],[1,0,-1,0]],cmap='jet',ix='TD',iy='RD') return np.array(gr)
def main(ngrains=100, sigma=5.0, iopt=1, ifig=1): """ arguments ========= ngrains = 100 sigma = 5. iopt = 1 (1: gauss (recommended); 2: expov; 3: logno; 4: norma) ifig = 1 """ import upf import matplotlib.pyplot as plt h = mmm() gr = [] for i in range(ngrains): dth = random.uniform(-180.0, 180.0) g = gen_gamma_gr(dth, sigma, iopt=iopt) for j in range(len(h)): temp = np.dot(g, h[j].T) phi1, phi, phi2 = euler(a=temp, echo=False) gr.append([phi1, phi, phi2, 1.0 / ngrains]) fn = "gam_fib_ngr%s_sigma%s.cmb" % (str(len(gr)).zfill(5), str(sigma).zfill(3)) f = open(fn, "w") f.writelines("Artificial gamma fibered polycrystal aggregate\n") f.writelines("var_gam_fiber.py python script\n") f.writelines("distribution: %s") if iopt == 1: f.writelines(" gauss") if iopt == 2: f.writelines(" expov") if iopt == 3: f.writelines(" logno") if iopt == 4: f.writelines(" norma") f.writelines("\n") f.writelines("B %i\n" % ngrains) for i in range(len(gr)): f.writelines("%7.3f %7.3f %7.3f %13.4e\n" % (gr[i][0], gr[i][1], gr[i][2], 1.0 / len(gr))) upf.cubgr(gr=gr, ifig=ifig) plt.figure(ifig).savefig("%s.pdf" % (fn.split(".cmb")[0])) return np.array(gr)
def main(ngrains=100,sigma=5.,iopt=1,ifig=1): """ arguments ========= ngrains = 100 sigma = 5. iopt = 1 (1: gauss (recommended); 2: expov; 3: logno; 4: norma) ifig = 1 """ import upf import matplotlib.pyplot as plt h = mmm() gr = [] for i in range(ngrains): dth = random.uniform(-180., 180.) g = gen_gamma_gr(dth, sigma, iopt=iopt) for j in range(len(h)): temp = np.dot(g,h[j].T) phi1,phi,phi2 = euler(a=temp, echo=False) gr.append([phi1,phi,phi2,1./ngrains]) fn = 'gam_fib_ngr%s_sigma%s.cmb'%(str(len(gr)).zfill(5),str(sigma).zfill(3)) f = open(fn,'w') f.writelines('Artificial gamma fibered polycrystal aggregate\n') f.writelines('var_gam_fiber.py python script\n') f.writelines('distribution: %s') if iopt==1: f.writelines(' gauss') if iopt==2: f.writelines(' expov') if iopt==3: f.writelines(' logno') if iopt==4: f.writelines(' norma') f.writelines('\n') f.writelines('B %i\n'%ngrains) for i in range(len(gr)): f.writelines('%7.3f %7.3f %7.3f %13.4e\n'%( gr[i][0], gr[i][1], gr[i][2], 1./len(gr))) upf.cubgr(gr=gr,ifig=ifig) plt.figure(ifig).savefig('%s.pdf'%(fn.split('.cmb')[0])) return np.array(gr)