|
|
hylyl
发表于 2026-9-12 10:31:50
|
显示全部楼层
program no_catalysis_initial !结构语句 定义开头项目名称
use ZDPlasKin !声明语句 调用ZDPlasKin
Implicit None !取消IN规则(ijklmn开头为整型,其他为实型)
!------------------------------------------------------------------------------------------------------------------------------------
!参数配置
!------------------------------------------------------------------------------------------------------------------------------------
!
!输入初始参数值,气压,温度,气体密度
double precision, parameter:: gas_pressure =101325.0, & !压力(Pa),1atm=101325Pa, 1bar=1E5 Pa, 100torr=13332.2 Pa
gas_temperature =300.0d0, & !气体温度(K)
K_B_const =1.38065d-23, & !玻尔兹曼常数(J/K)
R_const =8.31446, & !摩尔气体常数 J/(mol*K)
N_A_const =6.02214d23, & !阿伏伽德罗常数 (1/mol)
e_const =1.60218d-19, & !元电荷(C)
gas_density =1.0d-6*gas_pressure/K_B_CONST/gas_temperature, & !总的中性气体密度(cm-3),理想气体状态方程 p=nKT,n=N/V 总粒子数/体积
density_ini_N2 =gas_density*0.98, & !N2占总气体体积密度的比例 98%
density_ini_NH3 =gas_density*0.02, & !NH3占总气体体积密度的比例 2%
elec_density =1.0d13 !电子密度(cm-3)
!输入初始参数值,其他物理参数
double precision, parameter:: gap_length =4.5d0, & !放电间隙 (cm)
pi =3.1415926, &
freq =3.0d3, & !放电频率 (Hz) 20kHz
pulse_width =2.0d-7, & !脉冲宽度 200ns,1ns=1.0d-9s
omiga =2*pi*freq/gas_density, & !约化角频率(cm3/s)
power_max =1.59d6, & !最大功率密度(W/cm3)
gama =0.08, & !功率分布因子
power_min =1.8 !最小功率密度(W/cm3),体积10cm3
!变量参数定义
double precision :: density_old(species_max), & !所有物种密度
species_rate(species_max), & !所有物种的反应速率
reaction_rate(reactions_max) !所有化学反应的反应速率
double precision :: time, tau,dtime, EN, power, & !时间,时间步,约化场强, 功率密度
all_neutral ,all_species , & !总的中性粒子密度,总的物种密度
Oxgma, mu_e, Ne !电导率,电子迁移率,电子密度(cm-3)
!时间迭代参数
double precision, parameter::dtime_min =1.0d-10, & !最小时间步
time_end =1.38d-1 , & !结束时间
t_on=1.0d-7, t_off=1.0d-7 , & !脉冲上升、下降时间
t0=7.0d-2 , t1=6.79d-2 !开始时的余辉时间分为两段
integer :: pulse
integer,parameter :: pulse_max=18 !最大脉冲数的设置 ,半个脉冲周期的放电次数N_MD=9
!------------------------------------------------------------------------------------------------------------------------------------
!输出项目名称并在屏幕上显示
!
write(*,'(99(1pe14.5))') gas_density, power_min !输出数据,进行计算测试
write(*,'(/,A)') 'no catalysis_initial'
!------------------------------------------------------------------------------------------------------------------------------------
!软件初始化,初始密度和气体温度等参数
!
call ZDPlasKin_init()
call ZDPlasKin_set_density('N2',density_ini_N2) !初始N2密度
call ZDPlasKin_set_density('NH3',density_ini_NH3) !初始NH3密度
call ZDPlasKin_set_density('e',elec_density,LDENS_CONST=.false.) !初始电子密度(false为随时间变化,true为不随时间变化)
call ZDPlasKin_set_conditions(GAS_TEMPERATURE=gas_temperature) !气体温度
call ZDPlasKin_set_config(QTPLASKIN_SAVE=.true.) !计算结果的可视化输出
!====================================================================================================================================
! 屏显输出——测试用
write(*,'(99A14)')'time', 'power', 'EN', 'Oxgma', 'density_e' !屏幕测试输出
!时间步迭代//time integration
!====================================================================================================================================
time=0.0d0 !设置时间初始值
dtime = dtime_min !设置时间步
!------------------------------------------------------------------------------------------------------------------------------------
do pulse=1, pulse_max !脉冲循环计算
do while(time .lt. pulse*time_end)
tau = time-(pulse-1)*time_end !当前周期内相对时
if (tau < t0 - 1.0d-6) then
dtime = 1.0d-6
else
dtime = dtime_min
end if
!边界截断,防止步长跨过周期终点
if (time + dtime > pulse*time_end) dtime = pulse*time_end-time
if (tau .lt. t0) then
power = power_min !等待阶段,基底功率power_min
else if (tau .lt. t0 + t_on) then
!上升沿:从power_min线性上升至power_max
power = power_min + (power_max - power_min)/t_on * (tau-t0)
else if (tau .lt. t0 + t_on + t_off) then
!下降沿:从power_max线性回落至power_min
power = power_max - (power_max-power_min)/t_off * (tau - (t0+t_on))
else
power = power_min !脉冲结束,维持基底功率power_min
end if
!------------------------------------------------------------------------------------------------------------------------------------
!利用功率密度计算约化场强
call ZDPlasKin_get_conditions(ELEC_MOBILITY_N=mu_e) !调用电子迁移率
call ZDPlasKin_get_density_total(ALL_NEUTRAL=all_neutral) !调用中性气体总密度
Oxgma = e_const* density(species_electrons)*mu_e/all_neutral !计算电导率,需要除以中性气体总密度
EN = (power/Oxgma)**0.5/all_neutral*1.0d17 !计算约化场强,1Td=1.0d-17v*cm2
call ZDPlasKin_set_conditions(REDUCED_FIELD=EN) !设置约化场强
call ZDPlasKin_timestep(time,dtime) !调用时间积分
time=time + dtime !时间不断进行递增
write(*,'(99(1pe14.5))') time, power, EN, Oxgma, density(1)
end do !结束时间循环
end do !结束脉冲循环
!------------------------------------------------------------------------------------------------------------------------------------
write(*,'(/,A,$)') 'PRESS ENTER TO EXIT ...'
read(*,*)
end program no_catalysis_initia
------------------------------------------------------------
这是主代码,为什么出现下面这个错误
7.00000E-02 1.80000E+00 3.10212E-01 3.12558E-04 1.00000E+13
7.00000E-02 1.80000E+00 3.10212E-01 3.12558E-04 1.00000E+13
7.00000E-02 1.80000E+00 3.10212E-01 3.12558E-04 1.00000E+13
7.00000E-02 1.80000E+00 3.10212E-01 3.12558E-04 1.00000E+13
7.00000E-02 1.80000E+00 3.10212E-01 3.12558E-04 1.00000E+13
7.00000E-02 1.80000E+00 3.10212E-01 3.12558E-04 1.00000E+13
7.00000E-02 1.59169E+03 9.22470E+00 3.12558E-04 1.00000E+13
7.00000E-02 3.18169E+03 1.23937E+01 3.46126E-04 1.00000E+13
7.00000E-02 4.77169E+03 1.42957E+01 3.90153E-04 1.00000E+13
7.00000E-02 6.36169E+03 1.59258E+01 4.19129E-04 1.00000E+13
7.00000E-02 7.95168E+03 1.72153E+01 4.48338E-04 1.00000E+13
Program received signal SIGSEGV: Segmentation fault - invalid memory reference.
Backtrace for this error:
|
|