codexpast-exam-of-the-mphil-in-micro-and-nanotechnology-enterprise-course-of-the-university-of-cambridge2020paper-1-thermoelectric.py
past-exam-of-the-mphil-in-micro-and-nanotechnology-enterprise-course-of-the-university-of-cambridge/2020/paper-1-thermoelectric.py
"""Original explanatory diagram. Python 3.14; matplotlib 3.10, numpy 2.3. Run from the mirrored _media directory."""
from pathlib import Path
import numpy as np
import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt
from matplotlib.patches import Rectangle, FancyArrowPatch, Circle
plt.rcParams.update({'font.size':10,'figure.facecolor':'white','axes.facecolor':'white'})
fig,ax=plt.subplots(figsize=(7,4));x=np.linspace(-3,3,500);n=10**x
S=1/(1+np.exp(x));sig=1/(1+np.exp(-1.7*(x-.3)));kap=.18+.82*sig;zt=S*S*sig/kap;zt/=zt.max()
for y,t,c in [(S,'|S|','#126ca0'),(sig,'Electrical conductivity','#c06a13'),(kap,'Total thermal conductivity','#2f8a51'),(zt,'ZT (scaled)','#a14b9d')]:ax.semilogx(n,y,label=t,color=c,lw=2)
ax.axvspan(.2,2,color='#e9e0f0',alpha=.45);ax.text(.6,1.08,'Doped-semiconductor compromise',ha='center',fontsize=9)
ax.set(xlabel='Carrier concentration (arbitrary logarithmic scale)',ylabel='Separately scaled qualitative properties',ylim=(0,1.2));ax.set_yticks([]);ax.legend(frameon=False,fontsize=9,loc='center left');fig.tight_layout()
fig.savefig(Path(__file__).with_suffix('.png').name,dpi=150,facecolor='white',bbox_inches='tight');plt.close(fig)