00001 subroutine IO_output_plot_averaged_error_mpt(impt)
00002 use phys_constant, only : long
00003 use def_metric, only : psi, alph, bvxd, bvyd
00004 use coordinate_grav_r, only : rg
00005 use coordinate_grav_theta, only : thg
00006 use coordinate_grav_phi, only : phig
00007 use grid_parameter, only : nrg, ntg, npg
00008 use grid_points_binary_excision, only : irg_exin, irg_exout
00009 use def_binary_parameter, only : sepa, dis
00010 implicit none
00011 integer :: irg, itg, ipg, impt, count
00012 real(long) :: work_shift, error_psi, error_alph
00013 character(len=1) :: np(5) = (/'1', '2','3', '4', '5'/)
00014
00015 if (impt.eq.1) then
00016 work_shift = - dis
00017 else if(impt.eq.2) then
00018 work_shift = dis
00019 else if(impt.eq.3) then
00020 work_shift = 0.0d0
00021 end if
00022
00023
00024 open(12,file='plot_averaged_error_mpt'//np(impt)//'.dat',status='unknown')
00025 do irg = nrg, 0, -1
00026 count = 0
00027 error_psi = 0.0d0
00028 error_alph = 0.0d0
00029 do itg = 0, ntg
00030 do ipg = 0, npg
00031 if (impt.ne.3.and.irg.gt.irg_exin(itg,ipg).and. &
00032 & irg.lt.irg_exout(itg,ipg)) cycle
00033 error_psi = error_psi + &
00034 & dabs((psi(irg,itg,ipg) - bvxd(irg,itg,ipg))* &
00035 & 100.0d0/bvxd(irg,itg,ipg))
00036 error_alph = error_alph + &
00037 & dabs((alph(irg,itg,ipg) - bvyd(irg,itg,ipg))* &
00038 & 100.0d0/bvyd(irg,itg,ipg))
00039 count = count + 1
00040 end do
00041 end do
00042 write(12,'(1p,10e20.12)') -rg(irg)+work_shift, &
00043 & dabs(error_psi)/dble(count), dabs(error_alph)/dble(count)
00044 end do
00045 write(12,'(/)')
00046 do irg = 0, nrg
00047 count = 0
00048 error_psi = 0.0d0
00049 error_alph = 0.0d0
00050 do itg = 0, ntg
00051 do ipg = 0, npg
00052 if (impt.ne.3.and.irg.gt.irg_exin(itg,ipg).and. &
00053 & irg.lt.irg_exout(itg,ipg)) cycle
00054 error_psi = error_psi + &
00055 & dabs((psi(irg,itg,ipg) - bvxd(irg,itg,ipg))* &
00056 & 100.0d0/bvxd(irg,itg,ipg))
00057 error_alph = error_alph + &
00058 & dabs((alph(irg,itg,ipg) - bvyd(irg,itg,ipg))* &
00059 & 100.0d0/bvyd(irg,itg,ipg))
00060 count = count + 1
00061 end do
00062 end do
00063 write(12,'(1p,10e20.12)') rg(irg)+work_shift, &
00064 & dabs(error_psi)/dble(count), dabs(error_alph)/dble(count)
00065 end do
00066 close(12)
00067
00068 end subroutine IO_output_plot_averaged_error_mpt