多層誘電体板による反射・透過特性

モジュールのインポートや初期設定など

import numpy as np  
import matplotlib.pyplot as plt
np.set_printoptions(precision=4)
CCC = 299.79
qq = 180.0/np.pi
import scienceplots
#Warning : As of version 2.0.0, you need to add import scienceplots before setting the style (plt.style.use('science')).
plt.style.use(['science', 'notebook'])
#plt.rcParams['font.family'] = 'Times New Roman' # font familyの設定
plt.rcParams['font.family'] = 'serif' # font familyの設定
plt.rcParams['mathtext.fontset'] = 'cm' # math fontの設定
plt.rcParams["font.size"] = 10

ユーザ関数

多層誘電体板の反射・透過係数を求める関数は,
def func_slab_tr(nt, ep, td, t, sk, th, ic, ip):
    zk00 = ep[0]*(1.0-1j*td[0])
    zk00 = sk*np.sqrt(zk00)
    zsin00 = np.sin(th)
    zk1 = ep[nt+1]*(1.0-1j*td[nt+1])
    zk1 = sk*np.sqrt(zk1)
    zsin1 = zk00/zk1*zsin00
    zcos1 = np.sqrt(1.0-zsin1**2)
    za1, zf1 = 1.0, 1.0
    zb1, zg1 = 0.0, 0.0
    ttl = 0.0
    zzzg = 1.0
    for i in range(nt,-1,-1):
        zk2 = zk1
        zsin2, zcos2 = zsin1, zcos1
        za2, zb2, zf2, zg2  = za1, zb1, zf1, zg1
        zk1 = ep[i]*(1.0-1j*td[i])
        zk1 = sk*np.sqrt(zk1)
        zsin1 = zk2/zk1*zsin2
        zcos1 = np.sqrt(1.0-zsin1**2)
        zcos21 = zcos2/zcos1
        zy2 = zcos21*(zk2/zk1)
        zw2 = zcos21*(zk1/zk2)
        zgm1 = 1j*t[i]*zk1*zcos1
        za1 = np.exp( zgm1)*(za2*(1.0+zy2)+zb2*(1.0-zy2))/2.0
        zb1 = np.exp(-zgm1)*(za2*(1.0-zy2)+zb2*(1.0+zy2))/2.0
        zf1 = np.exp( zgm1)*(zf2*(1.0+zw2)+zg2*(1.0-zw2))/2.0*(zk2/zk1)
        zg1 = np.exp(-zgm1)*(zf2*(1.0-zw2)+zg2*(1.0+zw2))/2.0*(zk2/zk1)
        ttl = ttl+t[i]
        zzzg = zzzg*np.exp(-1j*zk1*t[i]*zcos1)
    ztn = 1.0/za1# transmission coefficient for perpendicular polarization
    ztp = 1.0/zf1# transmission coefficient for parallel polarization
    zrn = zb1/za1# reflection coefficient for perpendicular polarization
    zrp = zg1/zf1# reflection coefficient for parallel polarization
    if ip==1:
        zrp = -zrp
    if ic==0:
        zzz = 1j*sk*ttl*np.cos(th)
        zzz = np.exp(zzz)
        ztn = ztn*zzz
        ztp = ztp*zzz
        zzzg = zzzg*zzz
    cth = np.cos(th)
    n2sth2 = np.sqrt(ep[nt+1]-np.sin(th)**2);
    cth12 = n2sth2/cth
    ztn = ztn*np.sqrt(cth12)
    ztp = ztp*np.sqrt(cth12)
    return zrn,zrp,ztn,ztp,zzzg
電磁界の複素係数から絶対値,デジベル(dB),偏角(deg)を計算するため,
def dbdeg(z):
    q = 180.0/np.pi
    amp = np.abs(z)
    db = 20.0*np.log10(amp)
    rad = np.angle(z)
#   rad = np.unwrap(rad, discont=0.95*np.pi)
#   rad = np.unwrap(rad)
    deg = rad*q
    return amp,db,deg
多層誘電体の寸法,比誘電率,誘電正接をフォーマット付で出力するため,
def output_dielectric(nt,t,ep,td):
    print(f"{'No.':>4s} {'Thickness[mm]':>20s} {'Dielectric constant':>20s} {'Loss tangent':>20s}")
    for i in range(nt+2): 
        print(f"{i:4d} {t[i]:20.3f} {ep[i]:20.3f} {td[i]:20.3f}")
多層誘電体による反射・透過係数の計算値をフォーマット付で出力するため,
def output_tr(aa,cha,ndel,ztn,ztp,zrn,zrp,zzzg):
    atn,dtn,ptn = dbdeg(ztn)
    atp,dtp,ptp = dbdeg(ztp)
    arn,drn,prn = dbdeg(zrn)
    arp,drp,prp = dbdeg(zrp)
    atg,dtg,ptg = dbdeg(zzzg)
    print(f"{'':>7s} {'Transmission coefficients':>33s} {'Reflection coefficients':>33s}")
    print(f"{'':>8s} {'Perpendicular':>16s} {'Parallel':>16s} {'Perpendicular':>16s} {'Parallel':>16s}")
    print(f"{cha:>8s} {'Amp[dB]':>8s} {'Ph[deg]':>8s} {'Amp[dB]':>8s} {'Ph[deg]':>8s} {'Amp[dB]':>8s} {'Ph[deg]':>8s} {'Amp[dB]':>8s} {'Ph[deg]':>8s}")
    #Y1 = np.array([all,atn,ptn,atp,ptp,arn,prn,arp,prp,ptg])
    #YY1 = Y1.T
    for i in range(0,len(aa),ndel):
        #   print(('{:8.3f} '*len(aa)).format(*YY1[i]))
        print(f"{aa[i]:8.2f} {dtn[i]:8.3f} {ptn[i]:8.2f} {dtp[i]:8.3f} {ptp[i]:8.2f} {drn[i]:8.3f} {prn[i]:8.2f} {drp[i]:8.3f} {prp[i]:8.2f} {ptg[i]:8.2f}")
    return dtn,ptn,dtp,ptp,drn,prn,drp,prp,dtg,ptg
反射・透過係数の入射角特性を図示するため,
def figure4a(tthdeg,drn1,drp1,prn1,prp1,dtn1,dtp1,ptn1,ptp1,fname):
    ymin = -40.0
    dymin = np.abs(ymin)/15.0
    fig, ax = plt.subplots(nrows=2, ncols=2, figsize=(11, 7)) # グラフ領域の作成,nrows=縦に並べる数,ncols=横に並べる数
    
    ax[0][0].minorticks_on()
    ax[0][0].set_xlim(0, 90)
    ax[0][0].set_xticks(np.arange(0.0, 100.0, step=10))
    ax[0][0].set_ylim(ymin,0.0)
    ax[0][0].set_ylabel('Amplitude [dB]')
    ax[0][0].plot(tthdeg,drn1, color='blue')
    ax[0][0].plot(tthdeg,drp1, color='tab:green')
    
    ax[1][0].set_xlim(0, 90)
    ax[1][0].set_ylim(-180, 180)
    ax[1][0].set_xticks(np.arange(0.0, 100.0, step=10))
    ax[1][0].set_yticks(np.arange(-180.0, 270.0, step=90))
    ax[1][0].set_ylabel('Phase [deg]')
    ax[1][0].plot(tthdeg,prn1,'.', color='tab:blue')
    ax[1][0].plot(tthdeg,prp1,'.', color='tab:green')
    
    ax[0][1].minorticks_on()
    ax[0][1].set_xlim(0, 90)
    ax[0][1].set_xticks(np.arange(0.0, 100.0, step=10))
    ax[0][1].set_ylim(ymin,0.0)
    ax[0][1].set_ylabel('Amplitude [dB]')
    ax[0][1].plot(tthdeg,dtn1, color='tab:orange')
    ax[0][1].plot(tthdeg,dtp1, color='tab:red')
    
    ax[1][1].set_xlim(0, 90)
    ax[1][1].set_ylim(-180, 180)
    ax[1][1].set_xticks(np.arange(0.0, 100.0, step=10))
    ax[1][1].set_yticks(np.arange(-180.0, 270.0, step=90))
    ax[1][1].set_ylabel('Phase [deg]')
    ax[1][1].plot(tthdeg,ptn1,'.', color='tab:orange')
    ax[1][1].plot(tthdeg,ptp1,'.', color='tab:red')

    [[ax[i][j].set_xlabel('Incident angle [deg]') for i in range(2)] for j in range(2)]
    [ax[i][0].legend([r'$R_\perp$ (TE, perpendicular-pol.)','$R_\parallel$ (TM, parallel-pol.)'], \
                  ncol=1, loc='lower right', fancybox=False, frameon=True, fontsize=10) \
                for i in range(2)]
    [ax[i][1].legend([r'$T_\perp$ (TE, perpendicular-pol.)','$T_\parallel$ (TM, parallel-pol.)'], \
                  ncol=1, loc='lower right', fancybox=False, frameon=True, fontsize=10) \
                for i in range(2)]
    
    fig.tight_layout()
    fig.savefig(fname+'.pdf')
    plt.show()
反射・透過係数の周波数特性を図示するため,
def figure4b(tthdeg,ffreq,drn1,drp1,prn1,prp1,dtn1,dtp1,ptn1,ptp1,drn2,drp2,prn2,prp2,dtn2,dtp2,ptn2,ptp2,fname):
    ymin = -40.0
    dymin = np.abs(ymin)/15.0
    fig, ax = plt.subplots(2,2,figsize=(11, 7)) # グラフ領域の作成,nrows=縦に並べる数,ncols=横に並べる数
    
    ax[0,0].minorticks_on()
    ax[0,0].set_xlim(0, 90)
    ax[0,0].set_xticks(np.arange(0.0, 100.0, step=10))
    ax[0,0].set_ylim(ymin,0.0)
    ax[0,0].set_xlabel('Incident angle [deg]')
    ax[0,0].set_ylabel('Amplitude [dB]')
    ax[0,0].plot(tthdeg,drn1, tthdeg,drp1, tthdeg,dtn1, tthdeg,dtp1)
    ax[0,0].legend([r'$R_\perp$ (TE, perpendicular-pol.)','$R_\parallel$ (TM, parallel-pol.)','$T_\perp$ (TE, perpendicular-pol.)','$T_\parallel$ (TM, parallel-pol.)'], ncol=1, loc='lower right', fancybox=False, frameon=True, fontsize=10)

    ax[1,0].set_xlim(0, 90)
    ax[1,0].set_ylim(-180, 180)
    ax[1,0].set_xticks(np.arange(0.0, 100.0, step=10))
    ax[1,0].set_yticks(np.arange(-180.0, 270.0, step=90))
    ax[1,0].set_xlabel('Incident angle [deg]')
    ax[1,0].set_ylabel('Phase [deg]')
    ax[1,0].plot(tthdeg,prn1,'.', tthdeg,prp1,'.', tthdeg,ptn1,'.', tthdeg,ptp1,'.')
    ax[1,0].legend([r'$R_\perp$ (TE, Perpendicular-pol.)','$R_\parallel$ (TM, parallel-pol.)','$T_\perp$ (TE, Perpendicular-pol.)','$T_\parallel$ (TM, parallel-pol.)'], ncol=1, loc='lower right', fancybox=False, frameon=True, fontsize=10)
    
    ax[0,1].set_xlim(ffreq[0], ffreq[-1])
    ax[0,1].set_ylim(ymin,0.0)
    ax[0,1].set_xlabel('Frequency [GHz]')
    ax[0,1].set_ylabel('Amplitude [dB]')
    ax[0,1].plot(ffreq,drn2, ffreq,drp2, ffreq,dtn2, ffreq,dtp2)
    ax[0,1].legend([r'$R_\perp$ (TE, perpendicular-pol.)','$R_\parallel$ (TM, parallel-pol.)','$T_\perp$ (TE, perpendicular-pol.)','$T_\parallel$ (TM, parallel-pol.)'], ncol=1, loc='lower right', fancybox=False, frameon=True, fontsize=10)
    
    ax[1,1].set_xlim(ffreq[0], ffreq[-1])
    ax[1,1].set_ylim(-180, 180)
    ax[1,1].set_yticks(np.arange(-180.0, 270.0, step=90))
    ax[1,1].set_xlabel('Frequency [GHz]')
    ax[1,1].set_ylabel('Phase [deg]')
    ax[1,1].plot(ffreq,prn2,'.', ffreq,prp2,'.', ffreq,ptn2,'.', ffreq,ptp2,'.',)
    ax[1,1].legend([r'$R_\perp$ (TE, perpendicular-pol. )','$R_\parallel$ (TM, parallel-pol.)','$T_\perp$ (TE, perpendicular-pol.)','$T_\parallel$ (TM, parallel-pol.)'], ncol=1, loc='lower right', fancybox=False, frameon=True, fontsize=10)
    
    fig.tight_layout()
    fig.savefig(fname+'.pdf')
    plt.show()

計算条件

周波数については,
start_f, stop_f, nfreq = 5.0, 30.0, 25*20+1# 周波数の設定
ffreq = np.linspace(start_f, stop_f, nfreq)
wwl = CCC/ffreq# 波長[mm]
ssk = 2*np.pi/wwl# 波数
入射角については,
tthdeg = np.linspace(0.0, 90.0, nth+1)# incident angle
tth = tthdeg/qq
中心周波数ほかの設定は,
thdeg = 0.0
freq = 10.0# 中心周波数
nu_th = np.int64(np.round(nth)*thdeg/90)
nu_freq = np.int64(np.round((nfreq-1)*(freq-start_f)/(stop_f-start_f)))
ic = 0# =0:規格化しない, =1:誘電体スラブがない場合の位相で規格化
ip = 1# =1:式のとおり, =-1:reflection for parallel-pol. wave

誘電体境界面による反射・透過

誘電体境界面による反射・透過係数を求めるための計算条件は,
nt = 0# 誘電体スラブの層数
ep_end = 9.0# 終端の媒質の比誘電率
ep = np.array([1.0, ep_end]) # dielectric constant
td = np.array([0.0, 0.0]) # loss tangent
t = np.array([0.0, 0.0]) # thickness [mm], 境界面での反射・透過を求める場合
output_dielectric(nt,t,ep,td)
 No.        Thickness[mm]  Dielectric constant         Loss tangent
   0                0.000                1.000                0.000
   1                0.000                9.000                0.000
誘電体境界面による反射・透過係数を求め,計算値を出力および図示すると,
zrn,zrp,ztn,ztp,zzzg = func_slab_tr(nt, ep, td, t, ssk[nu_freq], tth, ic, ip)
print(f'Frequency={ffreq[nu_freq]:.1f}[GHz], wavelength={wwl[nu_freq]:.1f}[mm]')
dtn1,ptn1,dtp1,ptp1,drn1,prn1,drp1,prp1,dtg1,ptg1 = output_tr(tthdeg,'th[deg]',10,ztn,ztp,zrn,zrp,zzzg)
figure4a(tthdeg,drn1,drp1,prn1,prp1,dtn1,dtp1,ptn1,ptp1,'tr_nt0_angle')
Frequency=10.0[GHz], wavelength=30.0[mm]
                Transmission coefficients           Reflection coefficients
            Perpendicular         Parallel    Perpendicular         Parallel
 th[deg]  Amp[dB]  Ph[deg]  Amp[dB]  Ph[deg]  Amp[dB]  Ph[deg]  Amp[dB]  Ph[deg]
    0.00   -1.249     0.00   -1.249     0.00   -6.021   180.00   -6.021  -180.00     0.00
    5.00   -1.257     0.00   -1.242     0.00   -5.999   180.00   -6.043  -180.00     0.00
   10.00   -1.279     0.00   -1.220     0.00   -5.933   180.00   -6.110  -180.00     0.00
   15.00   -1.317     0.00   -1.183     0.00   -5.823   180.00   -6.226  -180.00     0.00
   20.00   -1.373     0.00   -1.131     0.00   -5.670   180.00   -6.396  -180.00     0.00
   25.00   -1.448     0.00   -1.064     0.00   -5.475   180.00   -6.630  -180.00     0.00
   30.00   -1.545     0.00   -0.982     0.00   -5.239   180.00   -6.940  -180.00     0.00
   35.00   -1.668     0.00   -0.884     0.00   -4.963   180.00   -7.348  -180.00     0.00
   40.00   -1.823     0.00   -0.772     0.00   -4.649   180.00   -7.884  -180.00     0.00
   45.00   -2.018     0.00   -0.645     0.00   -4.299   180.00   -8.598  -180.00     0.00
   50.00   -2.262     0.00   -0.508     0.00   -3.915   180.00   -9.574  -180.00     0.00
   55.00   -2.571     0.00   -0.362     0.00   -3.499   180.00  -10.970  -180.00     0.00
   60.00   -2.966     0.00   -0.217     0.00   -3.055   180.00  -13.120  -180.00     0.00
   65.00   -3.480     0.00   -0.088     0.00   -2.586   180.00  -16.977  -180.00     0.00
   70.00   -4.171     0.00   -0.006     0.00   -2.096   180.00  -28.255  -180.00     0.00
   75.00   -5.140     0.00   -0.043     0.00   -1.587   180.00  -20.103    -0.00     0.00
   80.00   -6.623     0.00   -0.379     0.00   -1.066   180.00  -10.780    -0.00     0.00
   85.00   -9.357     0.00   -1.677     0.00   -0.535   180.00   -4.945    -0.00     0.00
   90.00      nan      nan      nan      nan      nan      nan      nan      nan     0.00

整合層による反射・透過

整合層による反射・透過係数を求めるための計算条件は,
nt = 1# 誘電体スラブの層数
ep_end = 9.0# 終端の媒質の比誘電率
epl, tdl, tl = [3.0], [0.0], [17.3084/4.0]# 1/4波長整合層
ep = np.array([1.0] + epl + [ep_end])
td = np.array([0.0] + tdl + [0.0])
t = np.array([0.0] + tl + [0.0])
output_dielectric(nt,t,ep,td)
 No.        Thickness[mm]  Dielectric constant         Loss tangent
   0                0.000                1.000                0.000
   1                4.327                3.000                0.000
   2                0.000                9.000                0.000
整合層による反射・透過係数の入射角特性を求め,計算値を出力および図示すると,
zrn,zrp,ztn,ztp,zzzg = func_slab_tr(nt, ep, td, t, ssk[nu_freq], tth, ic, ip)
print(f'Frequency={ffreq[nu_freq]:.1f}[GHz], wavelength={wwl[nu_freq]:.1f}[mm]')
dtn1,ptn1,dtp1,ptp1,drn1,prn1,drp1,prp1,dtg1,ptg1 = output_tr(tthdeg,'th[deg]',10,ztn,ztp,zrn,zrp,zzzg)
figure4a(tthdeg,drn1,drp1,prn1,prp1,dtn1,dtp1,ptn1,ptp1,'tr_nt1_matching_angle')
Frequency=10.0[GHz], wavelength=30.0[mm]
                Transmission coefficients           Reflection coefficients
            Perpendicular         Parallel    Perpendicular         Parallel
 th[deg]  Amp[dB]  Ph[deg]  Amp[dB]  Ph[deg]  Amp[dB]  Ph[deg]  Amp[dB]  Ph[deg]
    0.00   -0.000   -38.04   -0.000   -38.04 -121.381   -90.00 -121.381   -90.00   -38.04
    5.00   -0.000   -38.10   -0.000   -38.10  -56.885   126.55  -56.923    53.53   -38.12
   10.00   -0.000   -38.30   -0.000   -38.31  -44.777   127.15  -44.928    53.15   -38.37
   15.00   -0.001   -38.63   -0.001   -38.65  -37.627   128.17  -37.962    52.44   -38.80
   20.00   -0.002   -39.10   -0.002   -39.15  -32.481   129.60  -33.064    51.37   -39.40
   25.00   -0.006   -39.70   -0.005   -39.83  -28.415   131.41  -29.298    49.87   -40.19
   30.00   -0.014   -40.43   -0.010   -40.71  -25.018   133.59  -26.236    47.85   -41.17
   35.00   -0.027   -41.30   -0.019   -41.82  -22.069   136.12  -23.635    45.23   -42.36
   40.00   -0.050   -42.30   -0.032   -43.19  -19.439   138.99  -21.333    41.99   -43.77
   45.00   -0.087   -43.45   -0.052   -44.86  -17.042   142.17  -19.212    38.12   -45.42
   50.00   -0.146   -44.72   -0.084   -46.85  -14.821   145.63  -17.179    33.73   -47.32
   55.00   -0.238   -46.14   -0.134   -49.21  -12.736   149.35  -15.164    28.98   -49.49
   60.00   -0.381   -47.68   -0.217   -51.96  -10.755   153.29  -13.120    24.12   -51.96
   65.00   -0.606   -49.35   -0.357   -55.15   -8.854   157.44  -11.028    19.35   -54.74
   70.00   -0.963   -51.15   -0.601   -58.80   -7.016   161.75   -8.884    14.86   -57.83
   75.00   -1.551   -53.05   -1.046   -62.96   -5.224   166.19   -6.696    10.71   -61.26
   80.00   -2.599   -55.06   -1.915   -67.65   -3.465   170.74   -4.479     6.92   -65.01
   85.00   -4.839   -57.16   -3.942   -72.93   -1.727   175.35   -2.243     3.39   -69.10
   90.00      nan      nan      nan      nan      nan      nan      nan      nan   -73.48

また,垂直入射における整合層による反射・透過係数の周波数特性は,
zrn,zrp,ztn,ztp,zzzg = func_slab_tr(nt, ep, td, t, ssk, tth[nu_th], ic, ip)
print(f'Incident angle={tthdeg[nu_th]:.1f}[deg]')
dtn2,ptn2,dtp2,ptp2,drn2,prn2,drp2,prp2,dtg2,ptg2 = output_tr(ffreq,'f[GHz]',20,ztn,ztp,zrn,zrp,zzzg)
figure4b(tthdeg,ffreq,drn1,drp1,prn1,prp1,dtn1,dtp1,ptn1,ptp1,drn2,drp2,prn2,prp2,dtn2,dtp2,ptn2,ptp2,'tr_nt1_matching_angle_freq')
Incident angle=0.0[deg]
                Transmission coefficients           Reflection coefficients
            Perpendicular         Parallel    Perpendicular         Parallel
  f[GHz]  Amp[dB]  Ph[deg]  Amp[dB]  Ph[deg]  Amp[dB]  Ph[deg]  Amp[dB]  Ph[deg]
    5.00   -0.669   -14.91   -0.669   -14.91   -8.451   139.11   -8.451   139.11   -19.02
    6.00   -0.473   -18.83   -0.473   -18.83   -9.860   129.99   -9.860   129.99   -22.82
    7.00   -0.289   -23.16   -0.289   -23.16  -11.919   120.47  -11.919   120.47   -26.63
    8.00   -0.136   -27.87   -0.136   -27.87  -15.108   110.57  -15.108   110.57   -30.43
    9.00   -0.035   -32.87   -0.035   -32.87  -20.920   100.36  -20.920   100.36   -34.23
   10.00   -0.000   -38.04   -0.000   -38.04 -121.381   -90.00 -121.381   -90.00   -38.04
   11.00   -0.035   -43.21   -0.035   -43.21  -20.920  -100.36  -20.920  -100.36   -41.84
   12.00   -0.136   -48.21   -0.136   -48.21  -15.108  -110.57  -15.108  -110.57   -45.65
   13.00   -0.289   -52.92   -0.289   -52.92  -11.919  -120.47  -11.919  -120.47   -49.45
   14.00   -0.473   -57.25   -0.473   -57.25   -9.860  -129.99   -9.860  -129.99   -53.25
   15.00   -0.669   -61.16   -0.669   -61.16   -8.451  -139.11   -8.451  -139.11   -57.06
   16.00   -0.857   -64.68   -0.857   -64.68   -7.469  -147.82   -7.469  -147.82   -60.86
   17.00   -1.020   -67.86   -1.020   -67.86   -6.793  -156.19   -6.793  -156.19   -64.67
   18.00   -1.144   -70.75   -1.144   -70.75   -6.352  -164.28   -6.352  -164.28   -68.47
   19.00   -1.223   -73.46   -1.223   -73.46   -6.102  -172.19   -6.102  -172.19   -72.27
   20.00   -1.249   -76.08   -1.249   -76.08   -6.021   180.00   -6.021   180.00   -76.08
   21.00   -1.223   -78.69   -1.223   -78.69   -6.102   172.19   -6.102   172.19   -79.88
   22.00   -1.144   -81.40   -1.144   -81.40   -6.352   164.28   -6.352   164.28   -83.68
   23.00   -1.020   -84.30   -1.020   -84.30   -6.793   156.19   -6.793   156.19   -87.49
   24.00   -0.857   -87.47   -0.857   -87.47   -7.469   147.82   -7.469   147.82   -91.29
   25.00   -0.669   -90.99   -0.669   -90.99   -8.451   139.11   -8.451   139.11   -95.10
   26.00   -0.473   -94.91   -0.473   -94.91   -9.860   129.99   -9.860   129.99   -98.90
   27.00   -0.289   -99.23   -0.289   -99.23  -11.919   120.47  -11.919   120.47  -102.70
   28.00   -0.136  -103.94   -0.136  -103.94  -15.108   110.57  -15.108   110.57  -106.51
   29.00   -0.035  -108.95   -0.035  -108.95  -20.920   100.36  -20.920   100.36  -110.31
   30.00   -0.000  -114.12   -0.000  -114.12 -111.838   -90.00 -111.838   -90.00  -114.12