Generated from /asc/asci2/site/flashcode/secure/release_4p5/source/physics/Diffuse/Diffuse_therm.F90 with ROBODoc v4.99.8 on Tue Mar 05 16:16:18 2019


[Functions] source/physics/Diffuse/Diffuse_therm





 call Diffuse_therm(integer(IN) :: sweepDir, 
                    integer(IN) :: igeom, 
                    integer(IN) :: blockID,
                    integer(IN) :: numCells,
                    integer(IN) :: blkLimits(2,MDIM),
                    integer(IN) :: blkLimitsGC(2,MDIM),
                    real(IN)    :: leftCoords(MAXCELLS or numCells),
                    real(IN)    :: rightCoords(MAXCELLS or numCells),
                    real(INOUT) :: temp_flx(NFLUXES,:,:,:),
                    real(IN)    :: areaLeft(:,:,:))


  Diffuse_therm alters the energy flux to account for heat losses through
  thermal diffusion.  This is an explicit method, so a timestep limiter
  will be required.  Stability is guaranteed for 
                 dt < .5* -------

  where D is the diffusion coefficient, related to the isochoric conductivity (sigma)
  and specific heat at constant volume (c_v) by

               D = sigma/(rho*c_v)

  Fluxes in PPM are stored at the zone boundaries, the temperature, etc. are
  at the zone centers.  So the flux {F = -sigma * grad(T)} is
                      sigma_i + sigma_{i-1}     T_i - T_{i-1}
             F_i = - ----------------------- * --------------- 
                               2                      dx

  and then the contribution to the energy equation (evolution of rho*E),
  where E is the energy/gram is - div(F) or
                        F_{i+1} - F_i
             dE_i  = - ---------------      

  together, these give
                     sigma_{i+1} + sigma_i     T_{i+1} - T_i
            dE_i =  ----------------------- * ---------------   -
                               2                   dx**2

                     sigma_i + sigma_{i-1}     T_i - T_{i-1}
                    ----------------------- * ---------------   -
                               2                   dx**2

  which reduces to the standard expression for diffusion if sigma is constant.


    This routine is used by the PPM implementation of the Hydro unit.
    Other implementations of Hydro, in particular MHD and RHD, may have their
    own mechanisms for handling diffusive effects that bypass Diffuse_therm
    (and the Diffuse code unit in general), or they may lack support for
    diffusive effects.

    This routine computes the heat fluxes and adds them to the energy flux
    returned from hydro_1d.  It is to be called after calling hydro_1d on a 
    block.  The updated energy fluxes are then used in hy_updateSoln to 
    produce the updated energy.

    Boundary conditions on the temperature are handled through the GridBoundaryConditions
    subunit, not in this routine.  Ex: setting a reflecting boundary will reflect the
    temperature into the guard cells, which are used in computing the flux
    at the block boundaries.


  sweepDir    -   the current sweep direction

  igeom       -   the geometry flag for the current sweep direction

  blockID     -   the block number to operate on
  numCells    -   the number of Cells along the sweep direction
  leftCoords  -   Coordinates of the left edge of the zones
  rightCoords -   Coordinates of the right edge of the zones

  temp_flx    -   Temporary storage for fluxes in sweep direction
  areaLeft    -   Cell face areas at the left (smaller) cell side
  blkLimits -   endpoints of block indices without including gcells
  blkLimitsGC -   endpoints of block indices including gcells


  Apparently this subroutine used to be called therm_explicit.