Program vieworb

This program takes an orbital or scattering function and evaluates it on a cartesian grid for visualization. By using negative values of mktm one can selectively retain only specified partial waves in the orbital with all other being zeroed out.

Input data records

  1. iuang, iugrd, iuanrd, iuxorb, iuvorb, iujorb
  2. If iuxorb < 0 then read
    mktype, ((mktm(j, k), j = 1, 2), k = 1, mktype)
  3. corig, ((caxis(k, i), k = 1, 3), i = 1, 2)
  4. For igrid = 1 to 3 read
    cmin(igrid), cmax, cstep(igrid)
  5. If iusedo = 0 then read

    iusedo

    else if iusedo < 0 then read

    iusedo, ((iusedr(j, k), j = 1, 2), k = 1, -iusedo)

    else if iusedo > 0 then read

    iusedo, (iusedr(1, k), k = 1, iusedo)

Definition of the input variables

iuang
input unit with angular grid.
iugrd
input unit with radial grid.
iuanrd
input unit with angular cutoffs.
iuxorb
input unit with single center expanded orbitals. These are then reexpanded on a cartesian grid. If iuxorb < 0 then read in mapping of symmetry types to change which component of the IR that a particular orbital belongs to will get plotted on the cartesina coordinates.
iuvorb
output unit for the orbitals expanded on the cartesian grid.
iujorb
output unit for flux expanded on the cartesian grid.
mktype
integer, this is the number of component switches plus the number of ranges of partial waves to use.
mktm(j, k)
integer, if mktm > 0 then these integers specify the symmetry types that are being switched. The symmetry types indicated in mktm(1, k) and mktm(2, k) are switched. If mktm < 0 then partial waves beginning with -mktm(1, k) and ending with -mktm(2, k) are used, all others not specified in mktm being set to zero.
corig(1:3)
real vector, origin of the cartesian system (in atomic units).
caxis(k, i)
real, caxis(1:3,1) and caxis(1:3,2) are two of the vectors that define the axes of the cartesian coordinate system. The third vector is obtained from the cross product c3 = c1 x c2.
cmin(igrid)
real, the lowest value of the coordinate in the direction of the igridth defining vector.
cmax(igrid)
real, the higest value of the coordinate in the direction of the igridth defining vector.
cstep(igrid)
real, the stepsize for the grid for the coordinate in the direction of the igridth defining vector.
iusedo
integer flag the controls which orbitals get expanded.
iusedr(j, k)
integer, iusedr(1, k) is the first orbital in a range of orbitals or a single orbital to expand. iusedr(2, k) is the last in a range of orbitals to expand.

Format of output onto unit iuvorb

     write (iuvorb, '(i10)') nuse
     write (iuvorb, '(3i10)') (ngrid(k), k = 1, 3)
     write (iuvorb, '(e20.10, 2e19.10)') (cmin(k), k = 1, 3)
     write (iuvorb, '(e20.10, 2e19.10)') (cstep(k), k = 1, 3)
     do i = 1, 3
        write (iuvorb, '(e20.10, 2e19.10)') (caxis(k, i), k = 1, 3)
     end do
     do iuse = 1, abs(nuse)
        write (iuvorb, '(e20.10)') cmaxr
        do i3 = 1, ngrid(3)
           do i2 = 1, ngrid(2)
              write (iuvorb, '(1x, 10f7.3)') &
                  (REAL(corb(i1, i2, i3), KIND = XR)/cmaxr, i1 = 1, ngrid(1))
           end do
        end do
        if (nuse .lt. 0) then
           write (iuvorb, '(e20.10)') cmaxi
           do i3 = 1, ngrid(3)
              do i2 = 1, ngrid(2)
                 write (iuvorb, '(1x, 10f7.3)')
                     (AIMAG(corb(i1, i2, i3))/cmaxi, i1 = 1, ngrid(1))
              end do
           end do
        end if
        write (iuvorb, '(e20.10)') cmaxsn
        do i3 = 1, ngrid(3)
           do i2 = 1, ngrid(2)
              write (iuvorb, '(1x, 10f7.3)')(corbsn(i1, i2, i3)/cmaxsn, &
                 i1 = 1, ngrid(1))
           end do
        end do
     end do