00001 subroutine hydro_irbns_vep_WL_peos(vpot)
00002 use phys_constant, only : long
00003 use grid_parameter, only : nrf, ntf, npf
00004 use make_array_2d
00005 use make_array_3d
00006 implicit none
00007 real(long), pointer :: vpot(:,:,:)
00008 real(long), pointer :: sou(:,:,:), soufc(:,:,:)
00009 real(long), pointer :: vpotfc(:,:,:), vpot_v(:,:,:), vpot_b(:,:,:)
00010
00011 call alloc_array3d(sou, 0, nrf, 0, ntf, 0, npf)
00012 call alloc_array3d(soufc, 0, nrf, 0, ntf, 0, npf)
00013 call alloc_array2d(surp, 0, ntf, 0, npf)
00014 call alloc_array3d(vpotfc, 0, nrf, 0, ntf, 0, npf)
00015 call alloc_array3d(vpot_v, 0, nrf, 0, ntf, 0, npf)
00016 call alloc_array3d(vpot_b, 0, nrf, 0, ntf, 0, npf)
00017
00018 call source_vep_WL_peos(sou)
00019 call interpo_flsfc2flsph_midpoint(sou,soufc)
00020
00021 call calc_weight_midpoint_fluid_sphcoord
00022 call poisson_solver_fluid_sphcoord(soufc,vpotfc)
00023 call interpo_flsph2flsfc(vpotfc,vpot_v)
00024
00025 call source_vep_surface_WL_peos(vpot_v,surp)
00026 call poisson_solver_homogeneous_sol(surp,vpot_b)
00027 vpot(0:nrf,0:ntf,0:npf) = vpot_v(0:nrf,0:ntf,0:npf)
00028 & + vpot_b(0:nrf,0:ntf,0:npf)
00029
00030 deallocate(sou)
00031 deallocate(soufc)
00032 deallocate(surp)
00033 deallocate(vpotfc)
00034 deallocate(vpot_v)
00035 deallocate(vpot_b)
00036 end subroutine hydro_irbns_vep_WL_peos