c---------------------------------------------------------------------|
c FDTD3dm1.f ( Maxwell Equation Simulator ) |
c |
c FDTD法によるスラブ座標系(x,y,z)でのプラズマ中における |
c マクスウェル方程式の2次元数値計算 |
c サブルーチン:PLASMA |
c 位置(x,y,z)での密度 F ,磁場 GX, GY, GZ,減衰率 dmp を与える |
c サブルーチン:YUDENTAI |
c 位置(x,y,z)を与えて,比誘電率(Sr, Si), 比透磁率 Qr を与える |
c サブルーチン:REISIN |
c x=Xminでの入射波形の時間分布を与える |
c サブルーチン:PROFILE |
c x=Xminでの入射波形のz方向分布を与える |
c Conducting Wall Bounary Conditionを用いる |
c プログラム作成者: 北條仁士, 筑波大学 2004年 11月 |
c---------------------------------------------------------------------|
implicit real*8(a-h,o-z)
dimension BX(501,201,201), BY(501,201,201), BZ(501,201,201)
dimension EX(501,201,201), EY(501,201,201), EZ(501,201,201)
dimension PX(501,201,201), PY(501,201,201), PZ(501,201,201)
dimension EX1(501,201,201), EY1(501,201,201), EZ1(501,201,201)
dimension DE(501)
common /BLK1/w0,B0,OMEGA
pi = 3.141592654d0
c---------------------------------------------------------------------|
c 数値計算パラメータの設定 |
c w0 = 3.0d11 のとき,長さの規格化 c/w0 = 1 mm , dx=dy=dz= 0.1 mm |
c w0 = 3.0d10 のとき,長さの規格化 c/w0 = 1 cm , dx=dy=dz= 1.0 mm |
c---------------------------------------------------------------------|
w0 = 2.5d10
B0 = 1.0d0
dt = 0.05d0
dx = 0.10d0
dy = 0.10d0
dz = 0.10d0
wx = dt / dx
wy = dt / dy
wz = dt / dz
c---------------------------------------------------------------------|
c システムパラメータの設定 |
c 入力周波数:OMEGA は GHz で表示 |
c システム長:Xmin, Zmin, Xmax, Zmax はミリ単位で表示 |
c---------------------------------------------------------------------|
itmax = 5000
OMEGA = 2.45d0
FREQ = 2.0d9*pi*OMEGA / w0
Xmin = 0.0d0
Ymin = 0.0d0
Zmin = 0.0d0
Xmax = 20.0d0
Ymax = 10.0d0
Zmax = 10.0d0
IMX = idint( (Xmax - Xmin) / dx + 0.5d0 )
JMX = idint( (Ymax - Ymin) / dy + 0.5d0 )
KMX = idint( (Zmax - Zmin) / dz + 0.5d0 )
IMDX = IMX / 100
JMDY = JMX / 100
KMDZ = KMX / 100
c---------------------------------------------------------------------|
c 電磁場の初期値の設定 |
c---------------------------------------------------------------------|
do k=1,KMX+1
do j=1,JMX+1
do i=1,IMX+1
BX(i,j,k) = 0.0d0
BY(i,j,k) = 0.0d0
BZ(i,j,k) = 0.0d0
EX(i,j,k) = 0.0d0
EY(i,j,k) = 0.0d0
EZ(i,j,k) = 0.0d0
PX(i,j,k) = 0.0d0
PY(i,j,k) = 0.0d0
PZ(i,j,k) = 0.0d0
EX1(i,j,k) = 0.0d0
EY1(i,j,k) = 0.0d0
EZ1(i,j,k) = 0.0d0
end do
end do
end do
c---------------------------------------------------------------------|
c 計算のスタート:時間 : time = ( it ) * dt |
c---------------------------------------------------------------------|
it = 0
20 continue
it = it + 1
c---------------------------------------------------------------------|
c z=Zminで励起する入射波の条件設定 |
c---------------------------------------------------------------------|
time = dt * dfloat(it)
do k=1,KMX+1
do j=1,JMX+1
z = dfloat(k-1)*dz + Zmin
y = dfloat(j-1)*dy + Ymin
p0 = 2.d0*pi*OMEGA / 30.d0
C1 = - p0*pi/10.d0 / ( (pi/10.d0)**2 + (pi/10.d0)**2 )
C2 = p0*pi/10.d0 / ( (pi/10.d0)**2 + (pi/10.d0)**2 )
c BX(1,j,k)= dcos(pi*y/10.d0)*dcos(pi*z/10.d0)*dsin(-FREQ*time)
c EY(1,j,k)= C1*dcos(pi*y/10.d0)*dsin(pi*z/10.d0)*dcos(-FREQ*time)
c EZ(1,j,k)= C2*dsin(pi*y/10.d0)*dcos(pi*z/10.d0)*dcos(-FREQ*time)
p0 = 2.d0*pi*OMEGA / 30.d0
C2 = p0*pi/10.d0 / ( (pi/10.d0)**2 + (pi/10.d0)**2 )
EX(1,j,k)= dsin(pi*y/10.d0)*dsin(pi*z/10.d0)*dsin(-FREQ*time)
c BZ(1,j,k)= C2*dcos(pi*y/10.d0)*dsin(pi*z/10.d0)*dcos(-FREQ*time)
end do
end do
c---------------------------------------------------------------------|
c 電磁場の磁場成分 BX, BY, BZ の計算 |
c---------------------------------------------------------------------|
do i=1,IMX+1
do j=1,JMX
do k=1,KMX
x = dfloat(i-1)*dx + Xmin + dx/2.d0
y = dfloat(j-1)*dy + Ymin + dy/2.d0
z = dfloat(k-1)*dz + Zmin + dz/2.d0
CALL YUDENTAI( x, y, z, Sr, Si, Qr )
BX(i,j,k) = BX(i,j,k) + wz*( EY(i,j,k+1) - EY(i,j,k) ) / Qr
BX(i,j,k) = BX(i,j,k) - wy*( EZ(i,j+1,k) - EZ(i,j,k) ) / Qr
end do
end do
end do
do i=1,IMX
do j=1,JMX+1
do k=1,KMX
x = dfloat(i-1)*dx + Xmin + dx/2.d0
y = dfloat(j-1)*dy + Ymin + dy/2.d0
z = dfloat(k-1)*dz + Zmin + dz/2.d0
CALL YUDENTAI( x, y, z, Sr, Si, Qr )
BY(i,j,k) = BY(i,j,k) + wx*( EZ(i+1,j,k) - EZ(i,j,k) ) / Qr
BY(i,j,k) = BY(i,j,k) - wz*( EX(i,j,k+1) - EX(i,j,k) ) / Qr
end do
end do
end do
do i=1,IMX
do j=1,JMX
do k=1,KMX+1
x = dfloat(i-1)*dx + Xmin + dx/2.d0
y = dfloat(j-1)*dy + Ymin + dy/2.d0
z = dfloat(k-1)*dz + Zmin + dz/2.d0
CALL YUDENTAI( x, y, z, Sr, Si, Qr )
BZ(i,j,k) = BZ(i,j,k) + wy*( EX(i,j+1,k) - EX(i,j,k) ) / Qr
BZ(i,j,k) = BZ(i,j,k) - wx*( EY(i+1,j,k) - EY(i,j,k) ) / Qr
end do
end do
end do
c---------------------------------------------------------------------|
c 誘起電流成分 PX, PY, PZ の計算 |
c---------------------------------------------------------------------|
do k=2,KMX
do j=2,JMX
do i=2,IMX
x = dfloat(i-1)*dx + Xmin
y = dfloat(j-1)*dy + Ymin
z = dfloat(k-1)*dz + Zmin
CALL PLASMA( x, y, z, dmp, F, A, GX, GY, GZ )
C1 = ( 1.d0 - dmp*dt/2.d0 ) / ( 1.d0 + dmp*dt/2.d0)
D1 = 1.d0 / ( 1.d0 + dmp*dt/2.d0)
PXT = C1*PX(i,j,k) + D1*dt*F*EX(i,j,k)
PXT = PXT - D1*dt*A*( PY(i,j,k)*GZ - PZ(i,j,k)*GY )
PYT = C1*PY(i,j,k) + D1*dt*F*EY(i,j,k)
PYT = PYT - D1*dt*A*( PZ(i,j,k)*GX - PX(i,j,k)*GZ )
PZT = C1*PZ(i,j,k) + D1*dt*F*EZ(i,j,k)
PZT = PZT - D1*dt*A*( PX(i,j,k)*GY - PY(i,j,k)*GX )
PX(i,j,k) = PXT
PY(i,j,k) = PYT
PZ(i,j,k) = PZT
end do
end do
end do
c---------------------------------------------------------------------|
c 電磁場の電場成分 EX, EY, EZ の計算 |
c---------------------------------------------------------------------|
do i=1,IMX
do j=2,JMX
do k=2,KMX
x = dfloat(i-1)*dx + Xmin
y = dfloat(j-1)*dy + Ymin
z = dfloat(k-1)*dz + Zmin
CALL YUDENTAI( x, y, z, Sr, Si, Qr )
V = ( OMEGA*2.0d9*pi/w0 ) * Si / Sr
C = ( 1.d0 - V*dt/2.d0 ) / ( 1.d0 + V*dt/2.d0)
D = 1.d0 / Sr / ( 1.d0 + V*dt/2.d0)
EX(i,j,k) = C*EX(i,j,k) - D*dt*PX(i,j,k)
EX(i,j,k) = EX(i,j,k) + D*wy*( BZ(i,j,k) - BZ(i,j-1,k) )
EX(i,j,k) = EX(i,j,k) - D*wz*( BY(i,j,k) - BY(i,j,k-1) )
end do
end do
end do
do i=2,IMX
do j=1,JMX
do k=2,KMX
x = dfloat(i-1)*dx + Xmin
y = dfloat(j-1)*dy + Ymin
z = dfloat(k-1)*dz + Zmin
CALL YUDENTAI( x, y, z, Sr, Si, Qr )
V = ( OMEGA*2.0d9*pi/w0 ) * Si / Sr
C = ( 1.d0 - V*dt/2.d0 ) / ( 1.d0 + V*dt/2.d0)
D = 1.d0 / Sr / ( 1.d0 + V*dt/2.d0)
EY(i,j,k) = C*EY(i,j,k) - D*dt*PY(i,j,k)
EY(i,j,k) = EY(i,j,k) + D*wz*( BX(i,j,k) - BX(i,j,k-1) )
EY(i,j,k) = EY(i,j,k) - D*wx*( BZ(i,j,k) - BZ(i-1,j,k) )
end do
end do
end do
do i=2,IMX
do j=2,JMX
do k=1,KMX
x = dfloat(i-1)*dx + Xmin
y = dfloat(j-1)*dy + Ymin
z = dfloat(k-1)*dz + Zmin
CALL YUDENTAI( x, y, z, Sr, Si, Qr )
V = ( OMEGA*2.0d9*pi/w0 ) * Si / Sr
C = ( 1.d0 - V*dt/2.d0 ) / ( 1.d0 + V*dt/2.d0)
D = 1.d0 / Sr / ( 1.d0 + V*dt/2.d0)
EZ(i,j,k) = C*EZ(i,j,k) - D*dt*PZ(i,j,k)
EZ(i,j,k) = EZ(i,j,k) + D*wx*( BY(i,j,k) - BY(i-1,j,k) )
EZ(i,j,k) = EZ(i,j,k) - D*wy*( BX(i,j,k) - BX(i,j-1,k) )
end do
end do
end do
c---------------------------------------------------------------------|
c YZ面(x=Xmax)でのMurの1次の吸収境界条件 |
c---------------------------------------------------------------------|
CT = ( wx - 1.d0 ) / ( wx + 1.d0 )
do j=1,JMX
do k=1,KMX+1
EY(IMX+1,j,k) = EY1(IMX,j,k) + CT*( EY(IMX,j,k)-EY1(IMX+1,j,k) )
end do
end do
do j=1,JMX+1
do k=1,KMX
EZ(IMX+1,j,k) = EZ1(IMX,j,k) + CT*( EZ(IMX,j,k)-EZ1(IMX+1,j,k) )
end do
end do
c---------------------------------------------------------------------|
c YZ面(x=Xmax)での EY=EZ=0 |
c---------------------------------------------------------------------|
c do j=1,JMX
c do k=1,KMX+1
c EY(IMX+1,j,k) = 0.d0
c end do
c end do
c do j=1,JMX+1
c do k=1,KMX
c EZ(IMX+1,j,k) = 0.d0
c end do
c end do
c---------------------------------------------------------------------|
c YZ面(x=Xmin)での EY=EZ=0 |
c---------------------------------------------------------------------|
c do j=1,JMX
c do k=1,KMX+1
c EY(1,j,k) = 0.d0
c end do
c end do
c do j=1,JMX+1
c do k=1,KMX
c EZ(1,j,k) = 0.d0
c end do
c end do
c---------------------------------------------------------------------|
c XZ面(y=Ymax)での EX=EZ=0 |
c---------------------------------------------------------------------|
do i=1,IMX+1
do k=1,KMX
EZ(i,JMX+1,k) = 0.d0
end do
end do
do i=1,IMX
do k=1,KMX+1
EX(i,JMX+1,k) = 0.d0
end do
end do
c---------------------------------------------------------------------|
c XZ面(y=Ymin)での EX=EZ=0 |
c---------------------------------------------------------------------|
do i=1,IMX+1
do k=1,KMX
EZ(i,1,k) = 0.d0
end do
end do
do i=1,IMX
do k=1,KMX+1
EX(i,1,k) = 0.d0
end do
end do
c---------------------------------------------------------------------|
c XY面(z=Zmax)での EX=EY=0 |
c---------------------------------------------------------------------|
do i=1,IMX
do j=1,JMX+1
EX(i,j,KMX+1) = 0.d0
end do
end do
do i=1,IMX+1
do j=1,JMX
EY(i,j,KMX+1) = 0.d0
end do
end do
c---------------------------------------------------------------------|
c XY面(z=Zmin)での EX=EY=0 |
c---------------------------------------------------------------------|
do i=1,IMX
do j=1,JMX+1
EX(i,j,1) = 0.d0
end do
end do
do i=1,IMX+1
do j=1,JMX
EY(i,j,1) = 0.d0
end do
end do
c---------------------------------------------------------------------
do k=1,KMX+1
do j=1,JMX+1
do i=1,IMX+1
EX1(i,j,k) = EX(i,j,k)
EY1(i,j,k) = EY(i,j,k)
EZ1(i,j,k) = EZ(i,j,k)
end do
end do
end do
c---------------------------------------------------------------------|
c 電磁場の十分に小さい値はゼロで置き換える |
c it = itmax になれば,計算を終了する |
c---------------------------------------------------------------------|
do k=1,KMX+1
do j=1,JMX+1
do i=1,IMX+1
if( dabs(EX(i,j,k)) .lt. 1.0d-80 ) EX(i,j,k) = 0.d0
if( dabs(EY(i,j,k)) .lt. 1.0d-80 ) EY(i,j,k) = 0.d0
if( dabs(EZ(i,j,k)) .lt. 1.0d-80 ) EZ(i,j,k) = 0.d0
if( dabs(BX(i,j,k)) .lt. 1.0d-80 ) BX(i,j,k) = 0.d0
if( dabs(BY(i,j,k)) .lt. 1.0d-80 ) BY(i,j,k) = 0.d0
if( dabs(BZ(i,j,k)) .lt. 1.0d-80 ) BZ(i,j,k) = 0.d0
end do
end do
end do
IF( it.EQ.500 ) go to 501
IF( it.EQ.1000 ) go to 502
IF( it.EQ.1500 ) go to 503
IF( it.EQ.2000 ) go to 504
IF( it.EQ.2500 ) go to 505
IF( it.EQ.3000 ) go to 506
IF( it.EQ.3500 ) go to 507
IF( it.EQ.4000 ) go to 508
IF( it.EQ.4500 ) go to 509
if( it.eq.itmax ) go to 510
go to 20
c---------------------------------------------------------------------|
c 電磁場の値のデータファイルを作る |
c---------------------------------------------------------------------|
501 open( 11, FILE='exp1', STATUS='unknown' )
do i=1,IMX+1
x = dfloat(i-1)*dx + Xmin
write(11,911) x, EX(i,51,51)
911 format(1h , e15.5, 2x, e15.5 )
end do
close(11)
open( 21, FILE='eyp1', STATUS='unknown' )
do i=1,IMX+1
x = dfloat(i-1)*dx + Xmin
write(21,911) x, EY(i,51,51)
end do
close(21)
go to 20
c--------------------------------------------------
502 open( 12, FILE='exp2', STATUS='unknown' )
do i=1,IMX+1
x = dfloat(i-1)*dx + Xmin
write(12,911) x, EX(i,51,51)
end do
close(12)
open( 22, FILE='eyp2', STATUS='unknown' )
do i=1,IMX+1
x = dfloat(i-1)*dx + Xmin
write(22,911) x, EY(i,51,51)
end do
close(22)
go to 20
c--------------------------------------------------
503 open( 13, FILE='exp3', STATUS='unknown' )
do i=1,IMX+1
x = dfloat(i-1)*dx + Xmin
write(13,911) x, EX(i,51,51)
end do
close(13)
open( 23, FILE='eyp3', STATUS='unknown' )
do i=1,IMX+1
x = dfloat(i-1)*dx + Xmin
write(23,911) x, EY(i,51,51)
end do
close(23)
go to 20
c--------------------------------------------------
504 open( 14, FILE='exp4', STATUS='unknown' )
do i=1,IMX+1
x = dfloat(i-1)*dx + Xmin
write(14,911) x, EX(i,51,51)
end do
close(14)
open( 24, FILE='eyp4', STATUS='unknown' )
do i=1,IMX+1
x = dfloat(i-1)*dx + Xmin
write(24,911) x, EY(i,51,51)
end do
close(24)
go to 20
c--------------------------------------------------
505 open( 15, FILE='exp5', STATUS='unknown' )
do i=1,IMX+1
x = dfloat(i-1)*dx + Xmin
write(15,911) x, EX(i,51,51)
end do
close(15)
open( 25, FILE='eyp5', STATUS='unknown' )
do i=1,IMX+1
x = dfloat(i-1)*dx + Xmin
write(25,911) x, EY(i,51,51)
end do
close(25)
go to 20
c--------------------------------------------------
506 open( 16, FILE='exp6', STATUS='unknown' )
do i=1,IMX+1
x = dfloat(i-1)*dx + Xmin
write(16,911) x, EX(i,51,51)
end do
close(16)
open( 26, FILE='eyp6', STATUS='unknown' )
do i=1,IMX+1
x = dfloat(i-1)*dx + Xmin
write(26,911) x, EY(i,51,51)
end do
close(26)
go to 20
c--------------------------------------------------
507 open( 17, FILE='exp7', STATUS='unknown' )
do i=1,IMX+1
x = dfloat(i-1)*dx + Xmin
write(17,911) x, EX(i,51,51)
end do
close(17)
open( 27, FILE='eyp7', STATUS='unknown' )
do i=1,IMX+1
x = dfloat(i-1)*dx + Xmin
write(27,911) x, EY(i,51,51)
end do
close(27)
go to 20
c--------------------------------------------------
508 open( 18, FILE='exp8', STATUS='unknown' )
do i=1,IMX+1
x = dfloat(i-1)*dx + Xmin
write(18,911) x, EX(i,51,51)
end do
close(18)
open( 28, FILE='eyp8', STATUS='unknown' )
do i=1,IMX+1
x = dfloat(i-1)*dx + Xmin
write(28,911) x, EY(i,51,51)
end do
close(28)
go to 20
c--------------------------------------------------
509 open( 19, FILE='exp9', STATUS='unknown' )
do i=1,IMX+1
x = dfloat(i-1)*dx + Xmin
write(19,911) x, EX(i,51,51)
end do
close(19)
open( 29, FILE='eyp9', STATUS='unknown' )
do i=1,IMX+1
x = dfloat(i-1)*dx + Xmin
write(29,911) x, EY(i,51,51)
end do
close(29)
go to 20
c-------------------------------------------------
510 open( 20, FILE='exp10', STATUS='unknown' )
do i=1,IMX+1
x = dfloat(i-1)*dx + Xmin
write(20,911) x, EX(i,51,51)
end do
close(20)
open( 30, FILE='eyp10', STATUS='unknown' )
do i=1,IMX+1
x = dfloat(i-1)*dx + Xmin
write(30,911) x, EY(i,51,51)
end do
close(30)
open( 31, FILE='exdata10', STATUS='unknown' )
do j=1,JMX+1,JMDY
write(31,931) (EX(131,j,k),k=1,KMX+1,KMDZ)
931 format(1h , e15.5, 100(2x, e15.5) )
end do
close(31)
open( 32, FILE='eydata10', STATUS='unknown' )
do j=1,JMX+1,JMDY
write(32,932) (EY(131,j,k),k=1,KMX+1,KMDZ)
932 format(1h , e15.5, 100(2x, e15.5) )
end do
close(32)
open( 33, FILE='ezdata10', STATUS='unknown' )
do j=1,JMX+1,JMDY
write(33,933) (EZ(131,j,k),k=1,KMX+1,KMDZ)
933 format(1h , e15.5, 100(2x, e15.5) )
end do
close(33)
open( 34, FILE='dexp10', STATUS='unknown' )
do i=1,IMX
x = dfloat(i-1)*dx + Xmin
DE(i) = EX(i,51,51) - EX(i+1,51,51)
write(34,934) x, DE(i)
934 format(1h , e15.5, 2x, e15.5 )
end do
close(34)
open( 35, FILE='SLEX10', STATUS='unknown' )
do i=1,IMX+1,2
write(35,935) (EX(i,51,k),k=1,KMX+1,KMDZ)
935 format(1h , e15.5, 100(2x, e15.5) )
end do
close(35)
open( 36, FILE='SLEY10', STATUS='unknown' )
do i=1,IMX+1,2
write(36,936) (EY(i,51,k),k=1,KMX+1,KMDZ)
936 format(1h , e15.5, 100(2x, e15.5) )
end do
close(36)
open( 37, FILE='SLEZ10', STATUS='unknown' )
do i=1,IMX+1,2
write(37,937) (EZ(i,51,k),k=1,KMX+1,KMDZ)
937 format(1h , e15.5, 100(2x, e15.5) )
end do
close(37)
c---------------------------------------------------------------------|
c メインプログラムの終了 |
c---------------------------------------------------------------------|
9999 stop
end
c---------------------------------------------------------------------|
c サブルーチン:PLASMA |
c 位置(x,z)での密度 F ,磁場 GX, GY, GZ,減衰率 dmp を与える |
c 最大密度 :DENTY は cm-3 で表示 |
c 磁場 :B0, BEX0 は Tesla で表示 |
c---------------------------------------------------------------------|
SUBROUTINE PLASMA( x, y, z, dmp, F, A, GX, GY, GZ )
implicit real*8(a-h, o-z)
common /BLK1/w0,B0,OMEGA
pi = 3.141592654d0
DENTY = 3.0d11
cc DENTY = 6.75d11
BEX0 = 0.0d0
dmp = 0.08d0
dmp = 0.04d0
F0 = 3.181d9 * DENTY / ( w0*w0 )
A = 1.76d11 * B0 / w0
cc IF( x .LT. 12.d0 ) F = 0.0d0
cc IF( x .GE. 12.d0 ) F = F0*(x-12.d0)/8.d0
cc IF( x .GE. 12.d0 ) F = F0
IF( x.LT.8.0d0 ) F = 0.0d0
IF( x.LT.8.0d0 ) go to 999
F = F0 * dtanh( (x - 8.0d0)/2.0d0 )
cc F = F0*( 1.d0 + dtanh( (x-12.d0)/3.d0 ) )/2.d0
F = F *( dtanh((z-2.d0)/1.5d0) - dtanh((z-8.d0)/1.5d0) )/2.d0
F = F *( dtanh((y-2.d0)/1.5d0) - dtanh((y-8.d0)/1.5d0) )/2.d0
999 GX = 0.0d0
GZ = 0.0d0
GY = BEX0 / B0
return
end
c---------------------------------------------------------------------|
c サブルーチン:YUDENTAI |
c 位置(x,z)での比誘電率(Sr, Si), 比透磁率 Qrを与える |
c---------------------------------------------------------------------|
SUBROUTINE YUDENTAI( x, y, z, Sr, Si, Qr )
implicit real*8(a-h,o-z)
common /BLK1/w0,B0,OMEGA
pi = 3.141592654d0
Sr = 1.d0
Si = 0.d0
Qr = 1.d0
IF( (x-7.d0)*(x-8.d0) .LT. 0.d0 ) Sr = 4.0d0
IF( x .EQ. 7.d0 ) Sr = 2.5d0
IF( x .EQ. 8.d0 ) Sr = 2.5d0
999 return
end
c---------------------------------------------------------------------|
c サブルーチン:REISIN |
c x=Xminでの入射波の波形の時間分布を与える |
c---------------------------------------------------------------------|
c SUBROUTINE REISIN( time, Bunpt )
c implicit real*8(a-h,o-z)
c common /BLK1/w0,B0,OMEGA
c pai = 3.141592654d0
c Freq = 2.0d9*pai*OMEGA / w0
c Bunpt = dsin( Freq * time )
c return
c end
c---------------------------------------------------------------------|
c サブルーチン:PROFILE |
c x=Xexcでの入射波の波形のz方向分布を与える |
c---------------------------------------------------------------------|
c SUBROUTINE PROFILE( y, z, Bunp )
c implicit real*8(a-h,o-z)
c pai = 3.141592654d0
c yy = y - 5.d0
c zz = z - 5.d0
c R = dsqrt( yy**2 + zz**2 )
c Bunp = dexp( - ( R / 2.0d0 )**2 )
c IF( R.LE.2.d0 ) Bunp = ( 1.d0 - (R/2.d0)**2 )**2
c IF( R.GT.2.d0 ) Bunp = 0.d0
c return
c end