The two chunks of code below should be copied and pasted to
the correct locations within the Flash source file:
  FLASH4.3/source/Driver/DriverMain/Split/Driver_evolveFlash.F90


! --------------------------------------------------------------------
! begin chunk 1: Srend for cm1.F: just after "use module start"
#ifdef SRENDERING
      use Srend
#ifdef _OPENMP
      USE OMP_LIB
#endif
#endif
! end chunk 1: Srend for cm1.F : just before "implicit none"
! --------------------------------------------------------------------


! --------------------------------------------------------------------
! begin chunk 2: Srend for cm1.F: just after "#endif" which is after "double precision :: tstart.tend"
#ifdef SRENDERING
! these are for packing/scaling vars and srend call -------------------
      real :: TWx, TWy
! these are passed to srend_render
      character*1,dimension(:,:,:),allocatable,save :: TWvar ! data array for rendering
! these are for reading the namelist_srend 
      logical,save :: srend_on
      character*60 :: srend_var
      integer,save :: srend_frequency
      integer,save :: srend_Vdim
      real,save :: srend_E(1:3),srend_V(1:3),srend_U(1:3)
      real,save :: srend_Alpha,srend_Beta
      real,save :: srend_EyeRight = 0.0
      real,save :: srend_clipx0,srend_clipx1,srend_clipy0
      real,save :: srend_clipy1,srend_clipz0,srend_clipz1
      real,save :: srend_pclip1
      real,save :: srend_pt(1:3), srend_pt_r
      real,save :: srend_clip0, srend_clip1, srend_dt
      character*200,save :: srend_filenames
      integer,save :: srend_perspective, srend_W, srend_H
      integer,save :: srend_tiles_right, srend_tiles_down
      integer,save :: srend_n_rgb_knot, srend_n_alpha_knot
      character*256,save :: srend_alpha_knot(1:32), srend_rgb_knot(1:32)
      namelist /namelistsrend/ srend_on, srend_var,                            & 
                                srend_frequency, srend_Vdim, srend_E, srend_V, &
                                srend_U, srend_alpha, srend_beta,              &
                                srend_clipx0, srend_clipx1,                    &
                                srend_clipy0, srend_clipy1,                    &
                                srend_clipz0, srend_clipz1,                    &
                                srend_pclip1, srend_pt, srend_pt_r,            &
                                srend_clip0, srend_clip1,                      &
                                srend_dt, srend_filenames,                     &
                                srend_perspective, srend_W, srend_H,           &
                                srend_tiles_right, srend_tiles_down,           &
                                srend_n_alpha_knot, srend_alpha_knot,          &
                                srend_n_rgb_knot, srend_rgb_knot
#endif
! end chunk 2: Srend for cm1.F: just before "namelist /param0/ nx, ..."
! --------------------------------------------------------------------


! --------------------------------------------------------------------
! begin chunk 3: Srend for cm1.F: just after  "read(20,nml=param0,err=8888,end=8888)"
#ifdef SRENDERING
      read(20,nml=namelistsrend) ! get rendering parameters
#endif
! end chunk 3: Srend for cm1.F: just before "close(unit=20)"
! --------------------------------------------------------------------


! --------------------------------------------------------------------
! begin chunk 4: Srend for cm1 : just after "nstep = nstep+1
#ifdef SRENDERING
      call srend_wrapper()
#endif
! end chunk 4: Srend for cm1 : just before "call solve(..."
! --------------------------------------------------------------------


! --------------------------------------------------------------------
! begin chunk 5: Srend for cm1: just after the "call stopcml" line
#ifdef SRENDERING

      contains 

      subroutine srend_wrapper

      if( .NOT. srend_on .OR. .NOT. mod(nstep-1,srend_frequency) == 0) return
      if( .NOT. allocated( TWvar) ) allocate(  TWvar(0:ni+1,0:nj+1,0:nk+1) )

! scale a variable to byte in the range 5 to 250
      if( index(srend_var, 'qc') .gt. 0) then
      
         do k=1,nk ! do k=0,nk+1
         do j=0,nj+1
         do i=0,ni+1
            TWx = abs( 1000.0 * q3d(i,j,k,2) ) ! Morrison q(1:6) : 2=qc
            TWy = 5.0 + 245.0 * TWx / (TWx + 1.0) 
            TWvar(i,j,k) = achar(floor(TWy))
         end do
         end do
         end do
         TWvar(:,:,0) = TWvar(:,:,1)
         TWvar(:,:,nk+1) = TWvar(:,:,nk)

      else if( index(srend_var, 'drho') .gt. 0) then
      
         do k=1,nk ! do k=0,nk+1
         do j=0,nj+1
         do i=0,ni+1
           TWx = 10000.0 * (rho(i,j,k) - rho0(i,j,k) ) !TW density change
           TWy = 5.0 + 122.5 + 122.5 * TWx / sqrt(TWx**2 + 1.0)
           TWvar(i,j,k) = achar(floor(TWy))
         end do
         end do
         end do
         TWvar(:,:,0) = TWvar(:,:,1)
         TWvar(:,:,nk+1) = TWvar(:,:,nk)

      else
         return
      end if

!$omp parallel default(shared)
          call srend_render(1,2,                  & ! view index: nV and nV_out
              srend_Vdim,                         & ! usually max dimension of entire volume
              srend_E,                            & ! eye
              srend_V,                            & ! Ev
              srend_U,                            & ! Up
              srend_alpha, srend_beta,            & ! alpha, beta
              srend_eyeright,                     & ! stereo right
              srend_clipx0,srend_clipx1,          & ! x plane near and far clip
              srend_clipy0,srend_clipy1,          & ! y plane near and far clip
              srend_clipz0,srend_clipz1,          & ! z plane near and far clip
              srend_pclip1,                       & ! far polar clip
              srend_pt, srend_pt_r,               & ! center(x,y,z) and radius of sphere to clip about
              srend_clip0, srend_clip1,           & ! spherical: clip near, clip far
              1,                                  & ! nshells
              srend_perspective,0,                & ! perspective=1, srendtype=0
              srend_dt,                           & ! dt sampling depth in cell widths
              TWvar,                              & ! data bytes
              ni,nj,nk,                           & ! data dimensions x,y,z
              1,                                  & ! boundary
              ni*( mod(myid,nodey) ),             & ! x offset
              nj*(myid / nodex),                  & ! y offset
              0,                                  & ! z offset
              srend_W,srend_H,                    & ! W, H
              1,(/1/),                            & ! number of vars to render, offsets color table
              srend_n_alpha_knot,srend_alpha_knot,& ! number alpha keys, and alpha keys
              srend_n_rgb_knot,srend_rgb_knot,    & ! number rgb keys, and rgb keys
              srend_filenames,                    & ! output filenames
              srend_tiles_right,srend_tiles_down, & ! tiling geometry
              (/0/) )                               ! MPI rank of target
!$omp end parallel

#ifdef MPI
      if(myid == 0) call srend_finish(2,nodex*nodey)
#endif

      end subroutine srend_wrapper
#endif
! end chunk 5: Srend for cm1: just before the "end program cm1" line.
! --------------------------------------------------------------------

