def ax_ref(ax, ref, ixy): if ax == None: fig = mpl_lib.wide_fig(nw=1, nh=1, w1=0.8, w0=0.9, ws=5., uh=3, uw=4, h0=0.25, h1=0.25, left=0.15, right=0.05, down=0.05, up=0.05) ax = fig.axes[0] if ref == None: import mech macro = mech.FlowCurve(name='model') macro.get_model(fn='STR_STR.OUT') if ixy == 0 or ixy == 1: ref = macro.sigma[0, 0] if ixy == 2 or ixy == 3: ref = macro.epsilon[0, 0] return ax, ref
def main_ph(ref=None, ixy=0, ax=None): """ ixy = 0 phase elastic strain (x), macrostress (y) ixy = 1 macrostress (x), phase elastic strain (y) ixy = 2 macrostrain (x), phase elastic strain (y) macro values are given as ref from ax_ref method """ import mpl_lib, dat_lib, axes_label import mech ax, ref = ax_ref(ax, ref, ixy) fdif = info(iopt=2) nph = len(fdif) ph_lat_str = [] for i in range(nph): f = mech.FlowCurve(name='phase_specific') f.get_pmodel_lat(fn='ph_str_%i.out' % (i + 1)) ph_lat_str.append(f) if ixy == 0: y = ref x_l = ph_lat_str[i].epsilon[0, 0] x_t = ph_lat_str[i].epsilon[1, 1] y_l, x_l = dat_lib.trim(y, ref=x_l) y_t, x_t = dat_lib.trim(y, ref=x_t) x = x_l y = y_l elif ixy == 1: x = ref y = ph_lat_str[i].epsilon[0, 0] elif ixy == 2: x = ref y = ph_lat_str[i].epsilon[0, 0] else: raise IOError, 'Unavailable ixy' ax.plot(x, y) axes_label.__ph__(ax=ax, ft=15, iopt=ixy)
def main_dep(ref=None, ixy=0, ndir=2): import mpl_lib import dat_lib import axes_label fdif = info(iopt=2) nph = len(fdif) if ndir == None: nw = 3 elif ndir != None: nw = ndir fig = mpl_lib.wide_fig(nw=nw, nh=nph, w1=0, w0=0, uh=3, h0=0.25, h1=0.25, left=0.15, right=0.05, down=0.05, up=0.05) axs = fig.axes if ref == None: import mech macro = mech.FlowCurve(name='model') macro.get_model(fn='STR_STR.OUT') ref = macro.sigma[0, 0] ax_dir = [] for iph in range(nph): hkls, chi_eta = read_dif(difile=fdif[iph]) np = len(hkls) ax_ph = [] for ip in range(np): hkl = hkls[ip] if ndir == None: ndir = len(chi_eta[ip]) for idir in range(ndir): lat = read_lat(hkl=hkl, difile=fdif[iph], iph=iph + 1, idir=idir + 1) iax = idir + nw * iph ax = axs[iax] if ip == 0: ax_ph.append(ax) if idir == 0 and ip == 0: ax_dir.append(ax) label = '(%i%i%i)' % (hkl[0], hkl[1], hkl[2]) if ixy == 0: x = ref y = lat x, y = dat_lib.trim(x, ref=lat) if ixy == 1: x = lat y = ref y, x = dat_lib.trim(y, ref=lat) ax.plot(x, y, label=label) if idir == 0 and ip == np - 1: ax.legend(loc='best', fontsize=8, fancybox=True, framealpha=0.5) axes_label.__ehkl__(ax=ax, iopt=ixy, ft=15) mpl_lib.tune_x_lim(ax_ph, axis='x') mpl_lib.tune_x_lim(ax_dir, axis='y') mpl_lib.rm_inner(ax_ph) for iax in range(len(axs)): axs[iax].grid('on')