call Grid_advanceDiffusion(integer(IN) :: iSoln, integer(IN) :: iSrc, integer(IN) :: iCond, integer(IN) :: iConstFact, integer(IN) :: bcTypes(6), real(IN) :: bcValues(2,6), real(IN) :: dt, real(IN) :: chi, real(IN) :: scaleFact, logical(IN) :: solnIsDelta, integer(IN), OPTIONAL :: pass)
This routine advances a diffusive operator (think head conduction) of the form A * dV/dt = d/dx(B*dV/dx) + d/dy(B*dV/dy) + d/dx(B*dV/dz) Heat conduction : rho*cv dT/dt = d/dx(kdT/dx) + ..
iSoln : The index for the solution variable (V, Temperature in heat conduction) iSrc : discretized RHS (d/dx(B*dV/dx) + d/dy(B*dV/dy) + d/dx(B*dV/dz)) iCond : The index of the diffusion coefficient (if used, otherwise -1) iConstFact : The index of coefficient of temporal derivative (think A) rho*cv in Heat conduction. bcTypes : Left and Right boundary condition type. Supports PERIODIC, OUTFLOW (tested). DIRICHLET,PNEUMAN (untested). bcValues : an unused argument used to keep the interface standard. dt : the time step. chi : a factor in the heat diffusion equation, not used anymore. scaleFact : the scaling factor for the eventual solution. solnIsDelta : Is the solution only a delta that the caller has to apply to the temperature, rather than temperature itself. pass : pass=1 order of directional sweep X-Y-Z, pass=2 order of directional sweep Z-Y-X.
It is currently assumed in this implementation DEV: But not checked! - KW that boundary condition types at all sides of the domain are the same. What this means to the user is that only the first value in bcTypes is checked here, and may be assumed to give the type of boundary condition for all 2*NDIM directions.