00001
00002 include '../Include_file/include_modulefiles_BBH_CF_3mpt.f90'
00003 include '../Include_file/include_interface_modulefiles_BBH_CF_3mpt.f90'
00004 include '../Include_file/include_subroutines_BBH_CF_3mpt.f90'
00005 include '../Include_file/include_functions.f90'
00006
00007
00008
00009
00010 PROGRAM Main_BBH_CF_3mpt_eqmass
00011
00012 use phys_constant, only : nmpt
00013 use grid_parameter, only : indata_type, outdata_type, iter_max, &
00014 & num_sol_seq
00015 use def_bh_parameter, only : bh_soltype
00016
00017 use grid_parameter_binary_excision
00018 use grid_points_binary_excision
00019 use grid_points_asymptotic_patch
00020 use grid_points_binary_in_asympto
00021 use weight_midpoint_binary_excision
00022 use radial_green_fn_grav
00023 use radial_green_fn_grav_bhex_nb
00024 use radial_green_fn_grav_bhex_dd
00025
00026 use radial_green_fn_grav_bhex_nd
00027 use radial_green_fn_grav_bhex_dh
00028 use radial_green_fn_grav_bhex_nh
00029 use interface_copy_to_hgfn_and_gfnsf
00030 implicit none
00031 integer :: impt, itg
00032 integer :: iseq, iter_count, total_iteration
00033
00034
00035 call allocate_grid_parameter_mpt
00036 call allocate_grid_parameter_binary_excision_mpt
00037 call allocate_def_bh_parameter_mpt
00038 do impt = 1, nmpt
00039 call read_parameter_mpt(impt)
00040 call copy_grid_parameter_to_mpt(impt)
00041 call read_parameter_binary_excision_mpt(impt)
00042 call copy_grid_parameter_binary_excision_to_mpt(impt)
00043 call read_parameter_bh_mpt(impt)
00044 call copy_def_bh_parameter_to_mpt(impt)
00045 call copy_grid_parameter_to_mpt(impt)
00046 end do
00047
00048
00049 call set_allocate_size_mpt
00050
00051 call allocate_coordinate_patch_kit_grav_mpt
00052 call allocate_grid_points_binary_excision
00053 call allocate_grid_points_asymptotic_patch
00054 call allocate_grid_points_binary_in_asympto
00055 call allocate_weight_midpoint_binary_excision
00056 call allocate_hgfn_bhex
00057 call allocate_hgfn_bhex_nb
00058 call allocate_hgfn_bhex_dd
00059 call allocate_hgfn_bhex_nd
00060
00061 call allocate_BBH_CF_AH
00062
00063 call allocate_mpatch_all_BBH_CF
00064 call allocate_grid_points_asymptotic_patch_mpt
00065 call allocate_grid_points_binary_in_asympto_mpt
00066 call allocate_BBH_CF_AH_mpt
00067
00068
00069 do iseq = 1, num_sol_seq
00070
00071 do impt = 1, nmpt
00072 call copy_grid_parameter_from_mpt(impt)
00073 call copy_grid_parameter_binary_excision_from_mpt(impt)
00074 call copy_def_bh_parameter_from_mpt(impt)
00075 call coordinate_patch_kit_grav_mpt
00076 call calc_parameter_binary_excision
00077 if (impt.ne.nmpt) then
00078 call calc_grid_points_binary_excision
00079 call calc_grid_points_binary_in_asympto(impt,nmpt)
00080 call copy_grid_points_binary_in_asympto_to_mpt(impt)
00081 end if
00082 call calc_weight_midpoint_binary_excision
00083
00084 call calc_vector_x_grav(0)
00085 call calc_vector_phi_grav(0)
00086 call calc_vector_bh(0)
00087
00088 call copy_to_mpatch_all_BBH_CF(impt)
00089 call copy_def_metric_to_mpt(impt)
00090 end do
00091 call copy_from_mpatch_all_BBH_CF(nmpt)
00092
00093 do impt = 1, 2
00094 call calc_grid_points_asymptotic_patch(impt,nmpt)
00095 call copy_grid_points_asymptotic_patch_to_mpt(impt)
00096 end do
00097 if(iseq.eq.1) then
00098 do impt = 1, nmpt
00099 call copy_from_mpatch_all_BBH_CF(impt)
00100 if (indata_type.eq.'IN') call initial_metric_CF_BH_mpt(impt)
00101 if (indata_type.eq.'3D') call IO_input_initial_3D_CF_BH_mpt(impt)
00102 call copy_def_metric_to_mpt(impt)
00103 end do
00104 end if
00105
00106 call iteration_BBH_CF_3mpt_eqmass(iter_count)
00107 write(6,*)'== Solution sequence # == ', iseq
00108 if (total_iteration.ge.iter_max) then
00109 write(6,*)' ** Solution did not converge **'
00110 end if
00111
00112 call calc_physical_quantities_BBH_CF_mpt
00113 call printout_physq_BBH_mpt(iseq)
00114
00115 if (bh_soltype.eq.'SQ') call next_solution_BBH_mpt
00116 if (bh_soltype.ne.'SQ') exit
00117
00118 end do
00119
00120 do impt = 1, nmpt
00121 call copy_from_mpatch_all_BBH_CF(impt)
00122 call copy_def_metric_from_mpt(impt)
00123 if (outdata_type.eq.'3D') call IO_output_solution_3D_CF_BH_mpt(impt)
00124 end do
00125
00126 END PROGRAM Main_BBH_CF_3mpt_eqmass