基于GAMMA模拟代码的激光全三维数值模拟伪代码
双specfreq=170.0//4T特斯拉频率(MHz)
整数点1=40//X中的空间点数量
int Points2=40//Y轴上的空间点数量
int Points3=40//Z中的空间点数量
双bw_pulse_bottom=7000//底部定位脉冲的带宽(Hz)
双频关=-bw_pulse_bottom/2+200//扫描开始,其中200 Hz为最低自旋频率
双频最终=bw_pulse_bottom/2+750//扫描结束,其中750 Hz是最高自旋频率
双步=(Points1*specfreq)/(freqfinal-freqoff)//定义渐变步长
spin_system系统(“SpinSystems/latetra.sys”)//设置旋转系统和操作员。
//开始空间模拟
for(nss1=0;nss1<Points1;nss1++)//切片
{
for(nss2=0;nss2<Points2;nss2++)
{
对于(nss3=0;nss3<点3;nss3++)
{
σ=Iypuls(sys,σ,90)//应用理想的90
Udelay=道具(H,ipdhalf)//
sigma=演变(sigma,Udelay)//tau=ipdhalf的演化自旋
对于(int pulse_number=1;pulse_number<7;pulse_number++)
{
//************* 开始180次脉冲***************//
if(脉冲数<3)
sys.offsetShifts(频率偏移+nss1*specfreq/Step)//梯度偏移(Hz)
if((脉冲编号>2)&(脉冲编号<5))
sys.offsetShifts(频率偏移+nss2*specfreq/Step)//梯度偏移(Hz)
if((脉冲数>4)
sys.offsetShifts(频率偏移+nss3*specfreq/Step);
Vol1=pulse_wave_form.GetUsum(−1)//用于180的所有步骤的传播器
sigma=应用压碎的脉冲y(sys,sigma,Vol1180)//应用压碎脉冲
if(脉冲数<3)
sys.offsetShifts(-freqoffns1*specfreq/Step)//梯度偏移(Hz)
if((2脉冲编号>2)&(脉冲编号<5))
sys.offsetShifts(-freqoffnss2*specfreq/Step);
if((脉冲数>4)
sys.offsetShifts(-freqoffnss3*specfreq/Step);
//*************** 180年代末*****************//
if(脉冲编号<6)
{Udelay=prop(H,ipdfull);//脉冲间演变
sigma=演变(sigma,U延迟);}//tau=ipdfull的演化自旋
其他的
{Udelay=prop(H,ipdhalf);//在最后一个脉冲后演化自旋
sigma=演变(sigma,U延迟);}//tau=ipdhalf的演化自旋
}//结束pulse_number循环
}//结束nss3循环
}//结束nss2回路
}//结束nss1循环