//Общиеконстанты
lambda=1.309;
ksi_e=pow(IC,double(1)/double(6));
//Рассчётпараметраэкранирования
Temp=pow(IC,double(2)/double(3))+pow(AC,double(2)/double(3));
ShldPrm_tf=0.8853*ShldPrm0/pow(Temp,double(1)/double(2));//ПараметрэкранированияТомаса-Ферми
Temp=pow(IC,double(1)/double(2))+pow(AC,double(1)/double(2));
ShldPrm_f=0.8853*ShldPrm0/pow(Temp,double(2)/double(3));//ПараметрэкранированияФирсова
randomize();//Инициализациясчётчикаслучайныхчисел
TPPrc=11;//Target Parameter Precision
//Вычисление минимального значения прицельного параметра
TgtPrmMIN=0;
//Вычисление максимального значения прицельного параметра
TgtPrmMAX=LP/2;
//Интервал значений прицельного параметра
TgtPrmRange=TgtPrmMAX-TgtPrmMIN;
for (k=1;k<=INum;k++)
{
//Начало цикла по энергии.
//Потери энергии вычисляются в соответствии с типом модели.
E_ND=100;//Числоразбиений (Number of Divisions)
E_Cntr=IE;//Счётчик (Counter)
E_Step=IE/E_ND;//Приращение (Step)
E_Int=0;
for (i=E_ND;i>=1;i--)
{
Energy=E_Cntr-E_Step/2;//Ion Energy
Rm_IL=0;//Rmin First Value
Rm_SL=LP/2;//Rmin Last Value
Rm_Range=Rm_SL-Rm_IL;
Rm_ND=100; DifferTemp=1;
Rm_Step=Rm_Range/Rm_ND;
Rm_Cntr=Rm_IL+Rm_Step;
for (j=1;j<=Rm_ND;j++)
{
Rm=Rm_Cntr-Rm_Step/2;
Temp=1-(IC*AC*pow(EC,2)*fTFF(Rm)*(IM+AM))/(4*PI*eps*eps0*Rm*Energy*AM);
Differ = (Temp<0) ? -Temp : Temp;
if (Differ<DifferTemp)
{DifferTemp=Differ; Rmin_0=Rm;}
Rm_Cntr+=Rm_Step;
}
IV=sqrt(2*Energy/IM);
Temp=pow(IC,double(2)/double(3))+pow(AC,double(2)/double(3));
NE_EW=(8*PI*ShldPrm0*SAD*ksi_e*IC*AC*pow(EC,2)*IV)/(V0*4*PI*eps*eps0*pow(Temp,double(3)/double(2)));//НеупругиепотериE_NE=0.525*pow(Temp,2)*pow(IM,2)*EC*1E3/(pow(ksi_e,2)*pow(IM+AM,2));
E_EW=0;En_Temp=0;
if (Energy<E_NE)
{
//Потери энергии при столкновениях (модель Томаса-Ферми-Фирсова)
ro_ND=100;//Числоразбиений (Number of Divisions)
ro_IL=0; ro_SL=LP/2-Rmin_0;//Пределыинтегрирования: Inferior Limit - нижний, Superrior Limit - верхний
ro_Range=ro_SL-ro_IL; //Длина интервала
ro_Cntr=ro_IL+ro_Range/ro_ND; ro_Step=ro_Range/ro_ND;//Счётчик и приращение
E_EW_Int=0;
for (l=1;l<=ro_ND;l++)
{
ro=ro_Cntr-ro_Step/2;//Переменнаяцикла
//Вычисление расстояния максимального сближения частиц
Rm_IL=0;//RminFirstValue
Rm_SL=LP/2;//Rmin Last Value
Rm_Range=Rm_SL-Rm_IL;
Rm_ND=100; DifferTemp=1;
Rm_Step=Rm_Range/Rm_ND;
Rm_Cntr=Rm_IL+Rm_Step;
for (j=1;j<=Rm_ND;j++)
{
Rm=Rm_Cntr-Rm_Step/2;
Temp=1-pow(ro/Rm,2)-(IC*AC*pow(EC,2)*fTFF(Rm)*(IM+AM))/(4*PI*eps*eps0*Rm*Energy*AM);
Differ = (Temp<0) ? -Temp : Temp;
if (Differ<DifferTemp)
{DifferTemp=Differ; Rmin=Rm;}
Rm_Cntr+=Rm_Step;
}
//ПотенциалТомаса-Ферми-Фирсова
U=IC*AC*pow(EC,2)*fTFF(Rmin)/(4*PI*eps*eps0*Rmin);
fi_ND=100;//Числоразбиений (Number of Divisions)
fi_IL=Rmin; fi_SL=1E-9;//Пределыинтегрирования: Inferior Limit - нижний, Superrior Limit - верхний
fi_Range=fi_SL-fi_IL; //Длина интервала
fi_Cntr=fi_IL+fi_Range/fi_ND; fi_Step=fi_Range/fi_ND;//Счётчик и приращение
fi_Int=0;
for (p=1;p<=fi_ND;p++)
{
fi=fi_Cntr-fi_Step/2;//Переменнаяцикла
Temp=1-pow(ro/fi,2)-IC*AC*pow(EC,2)*fTFF(fi)*(IM+AM)/(4*PI*eps*eps0*Energy*AM*fi);
Temp = (Temp<0) ? -Temp : Temp;
fi_Int+=(ro/pow(fi,2))*fi_Step/sqrt(Temp);
fi_Cntr+=fi_Step;//Приращение переменной цикла
}
alpha=PI-2*fi_Int;
alpha = (alpha<0) ? -alpha : alpha;
Temp=sin(alpha/2);
En_Temp+=4*Energy*IM*AM*pow(Temp,2)/pow(IM+AM,2);
E_EW_Int+=pow(Temp,2)*ro*ro_Step;
ro_Cntr+=ro_Step;//Приращение переменной цикла
}
En_Temp/=100;
E_EW=8*PI*IM*AM*SAD*Energy*E_EW_Int/pow(IM+AM,2);//Упругиепотери (Elastic Energy Waste)
}
En+=En_Temp; EW=NE_EW+E_EW;
Temp=(1/EW)*E_Step; E_Int+=Temp;
E_Cntr-=E_Step;
}
//Конецциклапоэнергии.
//Пробег и проецированный пробег ионов
R+=E_Int;
Temp1=double(AM/IM);
Rp+=R/(1+0.36*pow(Temp1,1.15));
}
//Конец цикла по прицельному параметру.
//Средний пробег и проецированный пробег ионов
R/=INum;
Rp/=INum;
Temp=double(3-1)/double(3*(2*3-1))*4*IM*AM/pow(IM+AM,2);
delta_R=sqrt(Temp)*R;
delta_Rp=sqrt(Temp)*Rp;
ResultData->Lines->Append("Среднийпробегионов:");
ResultData->Lines->Append(R);
ResultData->Lines->Append("Страгглингсреднегопробегаионов:");
ResultData->Lines->Append(delta_R);
ResultData->Lines->Append("Средний проецированный пробег ионов:");
ResultData->Lines->Append(Rp);
ResultData->Lines->Append("Страгглинг среднего проецированного пробега ионов:");
ResultData->Lines->Append(delta_Rp);
SubInf[ENum][2]=Rp;SubInf[ENum][3]=delta_Rp;
VInf[ENum][0]=Rp+20E-10;VInf[ENum][1]=delta_Rp;VInf[ENum][2]=En/(2*Ed)/100;
ENum++;
}
void __fastcall TIonImpl::Save1Click(TObject *Sender)
{
ResultData->Lines->SaveToFile("Ion_Run_Calculation_Results.txt");
}
void __fastcall TIonImpl::PropsClick(TObject *Sender)
{
Elem1_Info->SelectAll();InfoTemp=Elem1_Info->SelText;SubInf[0][1]=InfoTemp;
Elem2_Info->SelectAll();InfoTemp=Elem2_Info->SelText;SubInf[1][1]=InfoTemp;
Elem3_Info->SelectAll();InfoTemp=Elem3_Info->SelText;SubInf[2][1]=InfoTemp;
Elem4_Info->SelectAll();InfoTemp=Elem4_Info->SelText;SubInf[3][1]=InfoTemp;
Elem5_Info->SelectAll();InfoTemp=Elem5_Info->SelText;SubInf[4][1]=InfoTemp;
Elem6_Info->SelectAll();InfoTemp=Elem6_Info->SelText;SubInf[5][1]=InfoTemp;
Elem7_Info->SelectAll();InfoTemp=Elem7_Info->SelText;SubInf[6][1]=InfoTemp;
Elem8_Info->SelectAll();InfoTemp=Elem8_Info->SelText;SubInf[7][1]=InfoTemp;
Elem9_Info->SelectAll();InfoTemp=Elem9_Info->SelText;SubInf[8][1]=InfoTemp;
Elem10_Info->SelectAll();InfoTemp=Elem10_Info->SelText;SubInf[9][1]=InfoTemp;
Elem11_Info->SelectAll();InfoTemp=Elem11_Info->SelText;SubInf[10][1]=InfoTemp;
Elem12_Info->SelectAll();InfoTemp=Elem12_Info->SelText;SubInf[11][1]=InfoTemp;
Elem13_Info->SelectAll();InfoTemp=Elem13_Info->SelText;SubInf[12][1]=InfoTemp;
Elem14_Info->SelectAll();InfoTemp=Elem14_Info->SelText;SubInf[13][1]=InfoTemp;
//Elasticity
K_Elasticity->SelectAll(); InfoTemp=K_Elasticity->SelText; MU=InfoTemp.ToDouble();
//Графикконцентрациивнедрённойпримеси
GrphArea1->Canvas->MoveTo(50,250);GrphArea1->Canvas->LineTo(350,250);
GrphArea1->Canvas->MoveTo(50,250);GrphArea1->Canvas->LineTo(50,20);
for (i=-2;i<=2;i++)
{
j=(i<0) ? -i : i;
GrphArea1->Canvas->MoveTo(350,250);GrphArea1->Canvas->LineTo(350-5-j,250+i);
GrphArea1->Canvas->MoveTo(50,20);GrphArea1->Canvas->LineTo(50+i,20+5+j);
}
for (i=0;i<=280;i+=10)
{
GrphArea1->Canvas->MoveTo(50+i,248);
GrphArea1->Canvas->LineTo(50+i,252);
}
for (i=0;i<=220;i+=10)
{
GrphArea1->Canvas->MoveTo(48,250-i);
GrphArea1->Canvas->LineTo(52,250-i);
}
Ci_max=0;
for (i=0;i<=ENum-1;i++)
{
Ci_max+=(IBD/sqrt(2*PI))*(SubInf[i][1].ToDouble()/100/SubInf[i][3].ToDouble());
}
ResultData->Lines->Append("Максимальная концентрация внедрённой примеси:");
ResultData->Lines->Append(Ci_max);
GrphArea1->Canvas->MoveTo(50,250);
for (j=1;j<=300;j++)
{
Temp=j*ET.A*2;
Ci=0;
for (i=0;i<=ENum-1;i++)
{
Temp1=Temp-SubInf[i][2].ToDouble();
Ci+=(IBD/sqrt(2*PI))*(SubInf[i][1].ToDouble()/100/SubInf[i][3].ToDouble()*exp(-pow(Temp1,2)/(2*pow(SubInf[i][3].ToDouble(),2))));
}
X_coord=Ci/1E28*10;
if ((double(j)/double(5)-int(j/5))==0) ResultData->Lines->Append(X_coord);
GrphArea1->Canvas->LineTo(50+j,250-int(X_coord));
}
//Графикконцентрациивакансий
GrphArea2->Canvas->MoveTo(50,250);GrphArea2->Canvas->LineTo(350,250);
GrphArea2->Canvas->MoveTo(50,250);GrphArea2->Canvas->LineTo(50,20);
for (i=-2;i<=2;i++)
{
j=(i<0) ? -i : i;
GrphArea2->Canvas->MoveTo(350,250);GrphArea2->Canvas->LineTo(350-5-j,250+i);
GrphArea2->Canvas->MoveTo(50,20);GrphArea2->Canvas->LineTo(50+i,20+5+j);
}
for (i=0;i<=280;i+=10)
{
GrphArea2->Canvas->MoveTo(50+i,248);
GrphArea2->Canvas->LineTo(50+i,252);
}
for (i=0;i<=220;i+=20)
{
GrphArea2->Canvas->MoveTo(48,250-i);
GrphArea2->Canvas->LineTo(52,250-i);
}
Cv_max=0;
for (i=0;i<=ENum-1;i++)
{
Cv_max+=(VInf[i][2]*IBD/(sqrt(2*PI)*VInf[i][1]));
}
ResultData->Lines->Append("Максимальная концентрация вакансий:");
ResultData->Lines->Append(Cv_max);
GrphArea2->Canvas->MoveTo(50,250);
for (j=1;j<=300;j++)
{
Temp=j*ET.A*2;
Cv=0;
for (i=0;i<=ENum-1;i++)
{
Temp1=Temp-VInf[i][0];
Cv+=(VInf[i][2]*IBD/(sqrt(2*PI)*VInf[i][1]))*exp(-pow(Temp1,2)/(2*pow(VInf[i][1],2)));
}
X_coord=Cv/1E28*4;
if ((double(j)/double(5)-int(j/5))==0) ResultData->Lines->Append(X_coord);
GrphArea2->Canvas->LineTo(50+j,250-int(X_coord));
}
//Графикостаточныхконцентрационныхнапряжений
GrphArea3->Canvas->MoveTo(50,20);GrphArea3->Canvas->LineTo(350,20);
GrphArea3->Canvas->MoveTo(50,20);GrphArea3->Canvas->LineTo(50,250);
for (i=-2;i<=2;i++)
{
j=(i<0) ? -i : i;
GrphArea3->Canvas->MoveTo(350,20);GrphArea3->Canvas->LineTo(350-5-j,20+i);
GrphArea3->Canvas->MoveTo(50,250);GrphArea3->Canvas->LineTo(50+i,250-5-j);
}
for (i=0;i<=280;i+=10)
{
GrphArea3->Canvas->MoveTo(50+i,18);
GrphArea3->Canvas->LineTo(50+i,22);
}
for (i=0;i<=220;i+=8)
{
GrphArea3->Canvas->MoveTo(48,20+i);
GrphArea3->Canvas->LineTo(52,20+i);
}
sigma_max=-2*V_atom*MU*(Vv_relax*Cv_max+Vi_relax*Ci_max);
ResultData->Lines->Append("Максимальное значение остаточных концентрационных напряжений:");
ResultData->Lines->Append(sigma_max);
GrphArea3->Canvas->MoveTo(50,20);
for (j=1;j<=300;j++)
{
Temp=j*ET.A*2;
Ci=0; Cv=0;
for (i=0;i<=ENum-1;i++)
{
Temp1=Temp-SubInf[i][2].ToDouble();
Ci+=(IBD/sqrt(2*PI))*(SubInf[i][1].ToDouble()/100/SubInf[i][3].ToDouble()*exp(-pow(Temp1,2)/(2*pow(SubInf[i][3].ToDouble(),2))));
Temp2=Temp-VInf[i][0];
Cv+=(VInf[i][2]*IBD/(sqrt(2*PI)*VInf[i][1]))*exp(-pow(Temp2,2)/(2*pow(VInf[i][1],2)));
}
X_coord=-2*V_atom*(Vv_relax*Cv+Vi_relax*Ci)*80;
if ((double(j)/double(5)-int(j/5))==0) ResultData->Lines->Append(X_coord);
GrphArea3->Canvas->LineTo(50+j,20-int(X_coord));
}
EndInf=1;
}
Результаты работы Программы ION_IMPLANTATION для стали Р6М5
Ion Energy :
3,204384E-16
Средний пробег ионов:
2,32613035597026E-8
Страгглинг среднего пробега ионов:
6,79506169419965E-9
Средний проецированный пробег ионов:
8,38895746733611E-9
Страгглинг среднего проецированного пробега ионов:
2,45057132736608E-9
Максимальная концентрация внедрённой примеси:
1,30236551593508E29
Максимальная концентрация вакансий:
4,42091861648541E29
Максимальное значение остаточных концентрационных напряжений:
-367938963,822719
Ion Energy :
7,209864E-16
Средний пробег ионов:
5,078510843904E-8
Страгглинг среднего пробега ионов:
1,48352797212844E-8
Средний проецированный пробег ионов:
1,83151435849541E-8
Страгглинг среднего проецированного пробега ионов:
5,35019588556022E-9
Максимальная концентрация внедрённой примеси:
5,9652761494482E28
Максимальная концентрация вакансий:
9,08301934476326E28
Максимальное значение остаточных концентрационных напряжений:
-185484054,22526
Ion Energy :
1,1215344E-15
Средний пробег ионов:
7,04012176741875E-8
Страгглинг среднего пробега ионов:
2,05655119978581E-8
Средний проецированный пробег ионов:
2,53894980219664E-8
Страгглинг среднего проецированного пробега ионов:
7,41674708819403E-9
Максимальная концентрация внедрённой примеси:
4,30315278807487E28
Максимальная концентрация вакансий:
4,09627015317492E28
Максимальное значение остаточных концентрационных напряжений:
-137531263,764993