setup grid
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer, | intent(in) | :: | nxg |
number of voxels in each cardinal direction for fluence grid |
||
integer, | intent(in) | :: | nyg |
number of voxels in each cardinal direction for fluence grid |
||
integer, | intent(in) | :: | nzg |
number of voxels in each cardinal direction for fluence grid |
||
real(kind=wp), | intent(in) | :: | xmax |
half size of each dimension in fluence grid. |
||
real(kind=wp), | intent(in) | :: | ymax |
half size of each dimension in fluence grid. |
||
real(kind=wp), | intent(in) | :: | zmax |
half size of each dimension in fluence grid. |
type(cart_grid) function init_grid(nxg, nyg, nzg, xmax, ymax, zmax) !! setup grid !> number of voxels in each cardinal direction for fluence grid integer, intent(IN) :: nxg, nyg, nzg !> half size of each dimension in fluence grid. real(kind=wp), intent(IN) :: xmax, ymax, zmax integer :: i init_grid%nxg = nxg init_grid%nyg = nyg init_grid%nzg = nzg init_grid%xmax = xmax init_grid%ymax = ymax init_grid%zmax = zmax allocate(init_grid%xface(nxg + 1), init_grid%yface(nyg + 1), init_grid%zface(nzg + 2)) init_grid%xface = 0._wp init_grid%yface = 0._wp init_grid%zface = 0._wp ! Set small distance for use in optical depth integration routines ! for roundoff effects when crossing cell walls init_grid%delta = 1.e-8_wp * min(((2._wp*xmax)/nxg), ((2._wp*ymax)/nyg), ((2._wp*zmax)/nzg)) do i = 1, nxg + 1 init_grid%xface(i) = (i - 1) * 2._wp * xmax/nxg end do do i = 1, nyg + 1 init_grid%yface(i) = (i - 1) * 2._wp * ymax/nyg end do do i = 1, nzg + 2 init_grid%zface(i) = (i - 1) * 2._wp * zmax/nzg end do end function init_grid