.subckt G_LaserD A C PO
.param tnom=25
.param mf=1
.param ipk=100
.param vpk=20
.param vfb=6.5
.param bv=50
.param numD=5
.param nf=2
.param rs=0.1
.param ith=0.8
.param pwrSat=2.5
.param pwrSlope=pkpwr/(ipk-ith)
.param cjo=1e-12
.param vj=0.8
.param mj=0.3
.param fcj=0.5
.param imlt=10
.param k=1.38e-23
.param tempk=temp+273
.param q=1.603e-19
.param vt=k*tempK/q
.param is_ref=1e-12
.param lser=0
.param nf_calc=vfb/(vt*(ln(ith/is_ref)+1))
.param vr1=nf_calc*vt*(ln(ith/is_ref)+1)
.param vr2=nf_calc*vt*(ln(ipk/is_ref)+1)
.param rs_calc=((vpk-vfb)/(ipk-ith))-(vr2-vr1)/ipk
#.param rs_calc=((vpk-vfb)/(ipk-ith))
#.param rs_calc=(vpk-vr2)/ipk

Lser A n1 l=lser m=mf
Cdamp A n1b c=lser/25 m=mf
Rdamp n1b n1 r=0.7*sqrt(25)
vmon n1 n2 0
D1 n2 C g_LD m = mf
#R1  n1 C r = 1e7  tc1=0 m = mf
Ropt PO 0 r=1 m=mf
Bopt1 0 PO i = if((i(vmon)<mf*ith),0,if(i(vmon)<(mf*pwrSat*ipk),mf*pwrSlope*(i(vmon)),mf*pwrSat*pwrSlope*ipk))
C1 n1 C C=if((v(A,C)<=0),(mf*cjo/pwr((1-(v(A,C)/vj)),mj)),mf*cjo)

.model g_LD D
+ IS=is_ref
+ RS = rs_calc
+ N = nf_calc
+ BV = bv
+ IBV = 1E-06
+ EG = 1.11
+ TRS1 = 0
+ CJO = 1e-20
+ M = 0.3
+ VJ = 0.8
.ends G_LaserD
