00001 subroutine initial_metric_CF_NS_mpt(impt)
00002 use phys_constant, only : long, pi
00003 use grid_parameter
00004 use coordinate_grav_r
00005 use trigonometry_grav_theta, only : sinthg, costhg
00006 use trigonometry_grav_phi, only : sinphig, cosphig
00007 use def_binary_parameter, only : sepa, dis
00008 use def_metric
00009 implicit none
00010 real(long) :: st, ct, sp, cp, xa,ya,za, rcm2, xycm2, rcm, xycm, tcm, pcm, xcm,ycm,zcm
00011 real(long) :: rr, work_shift, pari
00012 integer :: irg, itg, ipg, impt, npg_l, npg_r
00013 character(30) :: char1, char2, char3, char4, char5
00014
00015 write( 6,*) sepa, dis
00016
00017 if(impt==1) then
00018 work_shift = -dis; pari= 1.0d0;
00019 else if(impt==2) then
00020 work_shift = -dis; pari= 1.0d0;
00021 else if(impt==3) then
00022 work_shift = 0.0d0; pari= 1.0d0;
00023 end if
00024
00025
00026 do irg = 0, nrg
00027 do ipg = 0, npg
00028 do itg = 0, ntg
00029 st = sinthg(itg)
00030 ct = costhg(itg)
00031 sp = sinphig(ipg)
00032 cp = cosphig(ipg)
00033 rr = rg(irg)
00034
00035 xa = rr*st*cp
00036 ya = rr*st*sp
00037 za = rr*ct
00038
00039 rcm2 = (xa-0.5d0*sepa)**2 + ya**2 + za**2
00040 xycm2= (xa-0.5d0*sepa)**2 + ya**2
00041 rcm = dsqrt(rcm2)
00042 xycm= dsqrt(xycm2)
00043
00044
00045
00046
00047
00048 psi(irg,itg,ipg) = 1.0d0
00049 alph(irg,itg,ipg) = 1.0d0
00050 alps(irg,itg,ipg) = 1.0d0
00051
00052
00053
00054 bvxd(irg,itg,ipg) = 0.0d0
00055 bvyd(irg,itg,ipg) = 0.01d0*pari*( -(xycm-work_shift)*((xycm-work_shift)**4 + 0.5d0**4)**(-0.5) )
00056 bvzd(irg,itg,ipg) = 0.0d0
00057 end do
00058 end do
00059 end do
00060
00061 if (impt.eq.1) then
00062 npg_l = npgxzm; npg_r = npgxzp; work_shift = - dis; pari = 1.0;
00063 else if(impt.eq.2) then
00064 npg_l = npgxzp; npg_r = npgxzm; work_shift = dis; pari = -1.0;
00065 else if(impt.eq.3) then
00066 npg_l = npgxzm; npg_r = npgxzp; work_shift = 0.0d0; pari = 1.0;
00067 end if
00068 write(char4, '(i5)') impt
00069 char5 = adjustl(char4)
00070 char3 = 'bv_mpt' // trim(char5) // '.txt'
00071
00072 open(15,file='./'//char3,status='unknown')
00073 do irg = nrg, 0, -1
00074 write(15,'(1p,9e20.12)') -rg(irg)+work_shift &
00075 & , bvxd(irg,ntgeq,npg_l) &
00076 & , bvyd(irg,ntgeq,npg_l)
00077 end do
00078 write(15,*) ' '
00079 do irg = 0, nrg
00080 write(15,'(1p,9e20.12)') rg(irg)+work_shift &
00081 & , bvxd(irg,ntgeq,npg_r) &
00082 & , bvyd(irg,ntgeq,npg_r)
00083 end do
00084 close(15)
00085
00086 end subroutine initial_metric_CF_NS_mpt