coordinate_grav_r_1D.f90

Go to the documentation of this file.
00001 ! r_coordinate for the field
00002 !______________________________________________
00003 module coordinate_grav_r_1D
00004   use phys_constant, only : nnrg, long
00005   use grid_parameter_1D, only : nrg, nrgin, rgin, rgmid, rgout, nrf
00006   implicit none
00007   real(long)  :: rg(0:nnrg), rginv(0:nnrg) ! radial grid points.  inv means 1/r
00008   real(long)  :: hrg(nnrg), hrginv(nnrg)   ! mid points.
00009   real(long)  :: drg(nnrg), drginv(nnrg)   ! intervals.
00010 contains
00011 subroutine grid_r_1D
00012 ! Grid points of r-coordinate
00013 ! --- Set up of meshes  ---  ( r(1) = dr ( not the center ) )
00014 !
00015   implicit none
00016   real(long)  ::  drdr, drdrinv
00017   real(long) :: ratrr  ! ratio between subsequent step outside rgmid (or rather nrgin). \delta_{j+1} = k \delta_{j}
00018   real(long) :: rvdom, ratrrb, alge, dalge, error, rdet
00019   integer    :: nrout, ir
00020 !
00021   drdr = (rgmid - rgin)/dble(nrgin)
00022   drdrinv = 1.0e0/drdr
00023   rvdom = rgout - rgmid
00024   nrout = nrg - nrgin
00025 !
00026     drg(1:nrgin)    = drdr
00027     drginv(1:nrgin) = drdrinv
00028 ! 
00029     ratrr = 2.0e0
00030 ! 
00031   DO
00032     ratrrb = ratrr
00033     alge = -(ratrr**(nrout+1)-ratrr-rvdom*drdrinv*(ratrr-1.0e0))
00034     dalge = dble(nrout+1)*ratrr**nrout - 1.0e0 - rvdom*drdrinv
00035     ratrr = ratrr + alge/dalge
00036     error = 2.d0*(ratrr - ratrrb)/(ratrr + ratrrb)
00037 ! 
00038     IF (abs(error)<=1.d-14) EXIT 
00039   END DO
00040 ! r-coordinate. interval dr
00041   DO ir = nrgin+1, nrg
00042     drg(ir) = ratrr*drg(ir-1)
00043     drginv(ir) = 1.0e0/drg(ir)
00044   END DO
00045 ! r-coordinate. grid ponit and mid point.
00046   rg(0) = 0.0e0
00047   rginv(0) = 0.0e0
00048   DO ir = 1, nrg
00049     rg(ir) = rg(ir-1) + drg(ir)
00050     hrg(ir) = (rg(ir) + rg(ir-1))*0.5e0
00051     rginv(ir) = 1.0e0/rg(ir)
00052     hrginv(ir) = 1.0e0/hrg(ir)
00053   END DO
00054 !結果同じにするため勝手につけたし
00055   write(6,"(' GR ', 4es23.15)") error, ratrr
00056   write(6,"('    ', 4es23.15)") rgout, rg(nrg)
00057 !つけたし終わり
00058 !      WRITE(6,'(1p,2e12.4)') error, ratrr
00059 !      WRITE(6,'(1p,2e12.4)') rgout, rg(nrg)
00060   rdet = (rg(nrg) - rgout)/rgout
00061   IF(dabs(rdet)>=1.e-10)then
00062     WRITE(6,*) ' bad coordinate GR ', rdet
00063     STOP
00064   END IF
00065 end subroutine grid_r_1D
00066 end module coordinate_grav_r_1D

Generated on 27 Oct 2011 for Cocal by  doxygen 1.6.1