00001 subroutine interpolation_cartesian_MRNS
00002 use phys_constant, only : long
00003 use grid_parameter, only : nrg, ntg, npg, nrf, ntf, npf
00004 use grid_parameter_cartesian, only : nx, ny, nz
00005 use coordinate_grav_r, only : rg
00006 use trigonometry_grav_theta, only : sinthg
00007 use trigonometry_grav_phi, only : sinphig, cosphig
00008 use def_metric
00009 use def_metric_hij
00010 use def_emfield
00011 use def_faraday_tensor
00012 use def_matter, only : emd, utf, uxf, uyf, uzf
00013 use def_metric_cartesian
00014 use def_metric_hij_cartesian
00015 use def_emfield_cartesian
00016 use def_faraday_tensor_cartesian
00017 use def_matter_cartesian
00018 use def_matter_velocity
00019 use interface_modules_cartesian
00020 use make_array_3d
00021 implicit none
00022 real(long) :: xxxx, yyyy
00023 real(long), pointer :: fnc_in(:,:,:), fnc_out(:,:,:)
00024 integer :: ir, it, ip
00025
00026 call alloc_array3d(fnc_in,0,nrg,0,ntg,0,npg)
00027 call alloc_array3d(fnc_out,1,nx,1,ny,1,nz)
00028
00029 call interpolation_metric(psi,psica)
00030 call interpolation_metric(alph,alphca)
00031 call interpolation_metric(bvxd,bvxdca)
00032 call interpolation_metric(bvyd,bvydca)
00033 call interpolation_metric(bvzd,bvzdca)
00034 call interpolation_metric(hxxd,hxxdca)
00035 call interpolation_metric(hxyd,hxydca)
00036 call interpolation_metric(hxzd,hxzdca)
00037 call interpolation_metric(hyyd,hyydca)
00038 call interpolation_metric(hyzd,hyzdca)
00039 call interpolation_metric(hzzd,hzzdca)
00040
00041 call invhij
00042 call calc_shift_down2up
00043 call interpolation_metric(bvxu,bvxuca)
00044 call interpolation_metric(bvyu,bvyuca)
00045 call interpolation_metric(bvzu,bvzuca)
00046
00047 call interpolation_metric(va,vaca)
00048 call interpolation_metric(vaxd,vaxdca)
00049 call interpolation_metric(vayd,vaydca)
00050 call interpolation_metric(vazd,vazdca)
00051 call interpolation_metric(fxd_grid,fxd_gridca)
00052 call interpolation_metric(fyd_grid,fyd_gridca)
00053 call interpolation_metric(fzd_grid,fzd_gridca)
00054 fnc_in(0:nrg,0:ntg,0:npg) = fijd_grid(0:nrg,0:ntg,0:npg,1)
00055 call interpolation_metric(fnc_in,fnc_out)
00056 fijd_gridca(1:nx,1:ny,1:nz,1) = fnc_out(1:nx,1:ny,1:nz)
00057 fnc_in(0:nrg,0:ntg,0:npg) = fijd_grid(0:nrg,0:ntg,0:npg,2)
00058 call interpolation_metric(fnc_in,fnc_out)
00059 fijd_gridca(1:nx,1:ny,1:nz,2) = fnc_out(1:nx,1:ny,1:nz)
00060 fnc_in(0:nrg,0:ntg,0:npg) = fijd_grid(0:nrg,0:ntg,0:npg,3)
00061 call interpolation_metric(fnc_in,fnc_out)
00062 fijd_gridca(1:nx,1:ny,1:nz,3) = fnc_out(1:nx,1:ny,1:nz)
00063
00064 call interpolation_matter(emd,emdca)
00065 call interpolation_matter(utf,utca)
00066 vxu(0:nrf,0:ntf,0:npf) = uxf(0:nrf,0:ntf,0:npf)/utf(0:nrf,0:ntf,0:npf)
00067 vyu(0:nrf,0:ntf,0:npf) = uyf(0:nrf,0:ntf,0:npf)/utf(0:nrf,0:ntf,0:npf)
00068 vzu(0:nrf,0:ntf,0:npf) = uzf(0:nrf,0:ntf,0:npf)/utf(0:nrf,0:ntf,0:npf)
00069 call interpolation_matter(vxu,vxca)
00070 call interpolation_matter(vyu,vyca)
00071 call interpolation_matter(vzu,vzca)
00072
00073 deallocate(fnc_in)
00074 deallocate(fnc_out)
00075 end subroutine interpolation_cartesian_MRNS