Fortran Coder

查看: 9303|回复: 2
打印 上一主题 下一主题

[求助] forrt1:severe(161)

[复制链接]

3

帖子

2

主题

0

精华

新人

F 币
23 元
贡献
10 点
跳转到指定楼层
楼主
发表于 2017-10-25 10:34:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
[Fortran] 纯文本查看 复制代码
program main
implicit none
real p,V0,f
!real RHS
real ox,ot
real De,Dp,qe,bt,KB                                                                                                                                                                                                                                                                                                                                                                                                                               
!real RS,git,rit
real miue,miup
real icjifen,vol,gama
real s0, sb,d1,d2,l,Dg
integer i,j,ii,k,error
!real am,bm,cm,dm,em

real xo(1001,1)
real ne(1001,2),np(1001,2),E(1000,2)
real g(1000,2),R(1000,2),gg(1000,2),RR(1000,2) ,gte(1000,2),Rte(1000,2)
real je(1000,1),jp(1000,1),jq(1000,1),XL(1000,2),XLL(1000,2),Xte(1000,2)
real IC(1000,1)
 real B(999,1),A(998,1),C(998,1),S(999,1)
real Bte(999,1),Ate(998,1),Cte(998,1),Ste(999,1)

real BB(999,1),AA(998,1),CC(998,1),SS(999,1),T(1,1),TT(1,1),ITz(1,1) ,Tte(1,1)
real vg(1,1),va(1,1),bdh1(2,1),bdh2(2,1),bdh11(2,1)
real Te(1000,1)	

V0=1.5e3                                          
P=760.0
F=3.3e4

s0=8.85E-14 
bt=1.389e-28
sb=7.5
D1=0.1
D2=0.1
Dg=0.2
L=0.2267
KB=1.380605e-23
gama=0.01
ox=2.0E-4
ot=1.0E-9

miue=4.863e2
De=7.2944e2
miup=10.4
Dp=0.53947
qe=1.6E-19





!!!!!!!!!!!!!!!!!!!!!!空间格点的坐标
j=1
xo(1,1)=0.1d0
do i=2,1001          
   xo(i,1)=xo(i-1,1)+ox
end do
!!!!!!!!!!!!!!!!!!!!!给ne np赋初值,即t=0时刻各点ne的值
do i=1,1001
   ne(i,1)=1.0d7
   np(i,1)=1.0d7
te(i,1)=0.026
end do

!!!!!!!!!!!!!!!!!!!!!给E赋值,即t=0时刻各点E的值
do i=1,1000
  E(i,1)= 1.0d7*qe
end do
do while(.true.)   !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!
va(1,1)=V0*sin(2.0d0*3.14d0*f*real(j)*ot)
do i=1,1000
   g(i,1)=miue*ox*E(i,1)/De
   R(i,1)=(exp(g(i,1))-1)/g(i,1)
   gg(i,1)=-miup*ox*E(i,1)/Dp
   RR(i,1)=(exp(gg(i,1))-1)/gg(i,1)
   gTE(i,1)=miue*ox*E(i,1)/De
   RTE(i,1)=(exp(gTE(i,1))-1)/gTE(i,1)
end do
!!!!!!!!!!!!追赶法求密度
do i=1,1000
  XL(i,1)=De*ot/(ox*ox*R(i,1))
  XLL(i,1)=Dp*ot/(ox*ox*RR(i,1))
  XTE(i,1)=5*De*ot /(3*ox*ox*RTE(i,1))
end do 
 do ii=1,998
        B(ii,1)=1+XL(ii+1,1)+XL(ii,1)*exp(g(ii,1))
        A(ii,1)=-XL(ii+1,1)
        C(ii,1)=-XL(ii+1,1)*exp(g(ii+1,1))
        S(ii,1)=ne(ii+1,1)+4.4*p*exp(-14.0*(p/abs(E(ii+1,1)))**0.5)*miue*abs(E(ii+1,1))*ot*ne(ii+1,1)-bt*ot*ne(ii+1,1)*ne(ii+1,1)*np(ii+1,1)
        BB(ii,1)=1+XLL(ii+1,1)+XLL(ii,1)*exp(gg(ii,1))
        AA(ii,1)=-XLL(ii+1,1)
        CC(ii,1)=-XLL(ii+1,1)*exp(gg(ii+1,1))
        SS(ii,1)=np(ii+1,1)+4.4*p*exp(-14.0*(p/abs(E(ii+1,1)))**0.5)*miue*abs(E(ii+1,1))*ot*ne(ii+1,1)-bt*ot*ne(ii+1,1)*ne(ii+1,1)*np(ii+1,1)
BTE(ii,1)=1+XTE(ii+1,1)+XTE(ii,1)*exp(gTE(ii,1))       
 ATE(ii,1)=-XTE(ii+1,1)       
 CTE(ii,1)=-XTE(ii+1,1)*exp(gTE(ii+1,1))
        STE(ii,1)=ne(ii+1,1)-qe*abs(E(ii+1,1))*je(ii+1,1)*ot-bt*ot*ne(ii+1,1)*ne(ii+1,1)*np(ii+1,1)*(3*KB*TE(ii+1,1)/2 )
end do

 end do
B(999,1)=1+XL(1000,1)+XL(999,1)*exp(g(999,1))
S(999,1)=ne(1000,1)+4.4*p*exp(-14.0*(p/abs(E(1000,1)))**0.5)*miue*abs(E(1000,1))*ot*ne(1000,1)-bt*ot*ne(1000,1)*ne(1000,1)*np(1000,1)
ne(1,2)=1.0d7
ne(1001,2)=1.0d7
S(1,1)=S(1,1)+XL(1,1)*ne(1,2)
S(999,1)=S(999,1)+XL(1000,1)*exp(g(1000,1))*ne(1001,2)!!!!!!!!!!!!!!!!!设置电子离子密度的边界值
BB(999,1)=1+XLL(1000,1)+XLL(999,1)*exp(gg(999,1))
SS(999,1)=np(1000,1)+4.4*p*exp(-14.0*(p/abs(E(1000,1)))**0.5)*miue*abs(E(1000,1))*ot*ne(1000,1)-bt*ot*ne(1000,1)*ne(1000,1)*np(1000,1)
np(1,2)=np(2,1)
np(1001,2)=np(1000,1)
SS(1,1)=SS(1,1)+XLL(1,1)*np(1,2)
SS(999,1)=SS(999,1)+XLL(1000,1)*exp(gg(1000,1))*np(1001,2)
BTE(999,1)=1+XTE(1000,1)+XTE(999,1)*exp(gTE(999,1))
 STE(999,1)=-qe*abs(E(1000,1))*ot*je(1000,1)-bt*ot*ne(1000,1)*ne(1000,1)*np(1000,1)*3*KB*TE(1000,1)/2
TE(1,2)=1.5
TE(1001,2)=1.5
STE(1,1)=STE(1,1)+XTE(1,1)*TE(1,2)
STE(999,1)=STE(999,1)+XTE(1000,1)*exp(gTE(1000,1))*TE(1001,2)!!!!!!!!
!追赶法
S(1,1)=S(1,1)/B(1,1)
T=B(1,1)
SS(1,1)=SS(1,1)/BB(1,1)
TT=BB(1,1)
STE(1,1)=STE(1,1)/BTE(1,1)
TTE=BTE(1,1)

do k=2,999 
    B(k-1,1)=C(k-1,1)/T(1,1)
    T(1,1)=B(k,1)-A(k-1,1)*B(k-1,1)
    S(k,1)=(S(k,1)-A(k-1,1)*S(k-1,1))/T(1,1)
    BB(k-1,1)=CC(k-1,1)/TT(1,1)
    TT(1,1)=BB(k,1)-AA(k-1,1)*BB(k-1,1)
SS(k,1)=(SS(k,1)-AA(k-1,1)*SS(k-1,1))/TT(1,1)
BTE(k-1,1)=CTE(k-1,1)/TTE(1,1)
    TTE(1,1)=BTE(k,1)-ATE(k-1,1)*BTE(k-1,1)
    STE(k,1)=(STE(k,1)-ATE(k-1,1)*STE(k-1,1))/TTE(1,1)

end do

do k=1,998
    S(999-k,1)=S(999-k,1)-B(999-k,1)*S(1000-k,1)
SS(999-k,1)=SS(999-k,1)-BB(999-k,1)*SS(1000-k,1)  
  STE(999-k,1)=STE(999-k,1)-BTE(999-k,1)*STE(1000-k,1)

end do
do i=2,1000
   ne(i,2)=S(i-1,1)
   np(i,2)=SS(i-1,1) 
   TE(i,2)=STE(i-1,1)                 
end do
!过河拆桥
ne(:,1)=ne(:,2)
np(:,1)=np(:,2)
TE(:,1)=TE(:,2)

if(vg(1,1)>=0)then
        do i=1,1000
           je(i,1)=De*(ne(i,1)-ne(i+1,1)*exp(g(i,1)))/(ox*R(i,1))
    
           jp(i,1)=Dp*(np(i,1)-exp(gg(i,1))*np(i+1,1))/(ox*RR(i,1))
jq(1,1)=3*(De*(ne(i,1)-ne(i+1,1)*exp(gte(i,1))))/5*(ox*Rte(i,1))
        end do
		if(jp(1000,1)>0)then
		   gama=0.01d0
		else
		   gama=0.0d0
		end if
       je(1000,1)=je(1000,1)-gama*jp(1000,1)!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!je jp的边界条件
	   
  else
	    do i=1,1000
           je(i,1)=De*(ne(i,1)-ne(i+1,1)*exp(g(i,1)))/(ox*R(i,1))
    jq(i,1)= 3*(De*(ne(i,1)-ne(i+1,1)*exp(gte(i,1))))/5*(ox*Rte(i,1))

           jp(i,1)=Dp*(np(i,1)-exp(gg(i,1))*np(i+1,1))/(ox*RR(i,1))
        end do
		if(jp(1000,1)<0)then
		   gama=0.01d0
		else
		   gama=0.0d0
		end if
	   je(1,1)=je(1,1)-gama*jp(1,1)
       
  end if
   
       iC=qe*(jp-je)
	   icjifen=ox*sum(iC)
	   vol=s0*(V0*sin(2.0d0*3.14d0*f*real(j)*ot)-V0*sin(2.0d0*3.14d0*f*real(j-1)*ot))/ot
       ITz(1,1)=(vol+icjifen)/L
       do i=1,1000
	      E(i,1)=ot*(ITz(1,1)-iC(i,1))/s0+E(i,1)
       end do
 
	  vg(1,1)=ox*sum(E(:,1))!!!!!2时刻的气体电压

	  bdh1(2,1)=(bdh1(1,1)+ic(1,1)*ot)
	  
   bdh2(2,1)=(bdh2(1,1)+ic(1000,1)*ot)

  
 bdh1(1,1)=bdh1(2,1)
 bdh11(1,1)=-bdh1(1,1)
 bdh2(1,1)=bdh2(2,1)
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    
  if(mod(j,100)==0)then
    open(1,file="ITz.dat")
	open(2,file="va.dat")
	open(3,file="vg.dat")
	open(4,file="bdh11.dat")
	open(5,file="bdh2.dat")
open(6,file="Te.dat")

	   write(1,*)   j,ITz(1,1)
	   write(2,*)   j,va(1,1)
	   write(3,*)   j,vg(1,1)
	   write(4,*)   j,bdh11(1,1)
	   write(5,*)   j,bdh2(1,1)
write(6,*)   j,Te(1,1)

  end if	   

  j=j+1
  write(*,*)j
 
   



     


close(1)
close(2)
close(3)
close(4)
close(5)
close(6)
stop
end program








分享到:  微信微信
收藏收藏 点赞点赞 点踩点踩

3

帖子

2

主题

0

精华

新人

F 币
23 元
贡献
10 点
沙发
 楼主| 发表于 2017-10-25 10:35:22 | 只看该作者
求助,要加一个 电子能量守恒方程式求 电子温度
         重粒子守恒方程  求气体温度

835

帖子

2

主题

0

精华

大宗师

F 币
3926 元
贡献
2334 点
板凳
发表于 2017-10-26 13:12:39 | 只看该作者
绝大多数人不了解你的专业,对这个算法更是不懂。你需要提供详细的算法说明,比如公式、文本介绍。
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

捐赠本站|Archiver|关于我们 About Us|小黑屋|Fcode ( 京ICP备18005632-2号 )

GMT+8, 2024-12-26 09:10

Powered by Tencent X3.4

© 2013-2024 Tencent

快速回复 返回顶部 返回列表