00001
00002 include '../Module/phys_constant.f90'
00003 include '../Module/def_quantities.f90'
00004 include '../Module/def_quantities_derived.f90'
00005 include '../Subroutine/IO_input_physq_plot.f90'
00006 include '../Subroutine/IO_output_physq_plot.f90'
00007 include '../Analysis/Subroutine/IO_output_physq_paper.f90'
00008 include '../Analysis/Module/def_physq_to_array.f90'
00009
00010
00011
00012
00013
00014 PROGRAM find_secular_point
00015
00016 use def_physq_to_array
00017 implicit none
00018 integer :: flag_restmass = 0
00019 integer :: total_num_sol, nn = 100
00020 integer :: ii, jj, num_physq, iseq_end, iseq_sig
00021 real(8) :: katamuki, param
00022
00023 do ii = 1, nn
00024 jj = ii
00025 call IO_input_physq_plot(jj,flag_restmass)
00026 if (flag_restmass.eq.9999) then
00027 total_num_sol = ii - 1
00028 exit
00029 end if
00030 call physq_to_array(ii,flag_restmass,num_physq)
00031 end do
00032
00033 if (physq_array(9,1).gt.physq_array(9,2)) then
00034 write(6,*) ' Axis ratio decreasing order '
00035 iseq_end = 0
00036 iseq_sig = 1
00037 else
00038 write(6,*) ' Axis ratio increasing order '
00039 iseq_end = total_num_sol + 1
00040 iseq_sig = - 1
00041 end if
00042
00043 physq_array(:,iseq_end) = 0.0d0
00044 read(5,*) param
00045
00046 do jj = 3, num_physq
00047 katamuki = (physq_array(jj,iseq_end+iseq_sig*2) &
00048 & - physq_array(jj,iseq_end+iseq_sig*3)) &
00049 & /(physq_array( 9,iseq_end+iseq_sig*2) &
00050 & - physq_array( 9,iseq_end+iseq_sig*3))
00051 physq_array(jj,iseq_end) = katamuki &
00052
00053 & *(param - physq_array( 9,iseq_end+iseq_sig*1)) &
00054 & + physq_array(jj,iseq_end+iseq_sig*1)
00055 end do
00056
00057 call array_to_physq(iseq_end+iseq_sig*1,flag_restmass,num_physq)
00058 call IO_output_physq_plot(1,flag_restmass)
00059 call array_to_physq(iseq_end,flag_restmass,num_physq)
00060 call IO_output_physq_plot(2,flag_restmass)
00061
00062 call IO_output_physq_paper(1)
00063
00064 END PROGRAM find_secular_point