call Diffuse_advance1D(integer(IN) :: nx, integer(IN) :: ny, integer(IN) :: nz, integer(IN) :: idirection, integer(IN) :: bctype(2), real(IN) :: del, real(IN) :: dt, real(IN) :: theta, real(IN) :: chi, real(IN) :: cond(nx,ny,nz), real(INOUT) :: soln(nx,ny,nz), logical(IN) :: useCFArray, real,OPTIONAL, pointer :: ConstFact(:,:,:))
Subroutine to advance Diffusion in one dimension. This routine advances a diffusive operator (think heat conduction) in time. Generic form of the equation a*dV/dt = d/dx(b*dV/dx) + d/dy(b*dV/dy) + d/dz(b*dV/dz) i.e for Heat conduction, a=rho*Cv, b=conductivity and V=Temp
nx : Total grid points along x-direction. ny : Total grid points along y-direction. nz : Total grid points along z-direction. idirection : Direction of solve bctype : Left and Right boundary condition type. Supports PERIODIC, OUTFLOW (tested). DIRICHLET,PNEUMAN (untested). del : dx,dy or dz based on direction of solve dt : timestep. theta : 0.5 CN Scheme, 1.0 Fully Implicit, 0.0 Explicit chi : Diffusion coefficient, not used anymore. cond : Spatial Conductivity variation (K) soln : discretised variation of variable to be diffused (input). On Output contains the diffused solution. useCFArray : Flag to determine if we have ConstFact(:,:,:) ConstFact : Spatial distributio of a factor (think rho*cv in heat conduction). !!
This public API subroutine is so far used only from the pencil grid implementation of Grid_advanceDiffusion. The pencil grid implementation of Grid_advanceDiffusion, in turn, is currently only used by the Split implementation of the DiffuseMain subunit.