Grid_putFluxData(integer(IN) :: blockID, integer(IN) :: axis, real(IN) :: fluxes(NFLUXES,dataSize(1),dataSize(2),dataSize(3)), integer(IN) :: dataSize(3), OPTIONAL,integer(IN) :: pressureSlot, OPTIONAL,real(IN) :: areaLeft(:,:,:))
Put the fluxes in a direction specified by axis for boundary cells for block blockID. This routine needs to be used with adaptive mesh since fluxes calculated by the two blocks that are at fine/coarse boundary have different accuracy. The fluxes calculated by individual blocks are reported to the Grid through this call. Once that is done, a call to Grid_conserveFluxes applies the flux conservation algorithm to make it consistent across the fine/coarse boundaries.
blockID : The local blockid axis : integer value specifying on which cell faces to put fluxes. The options are IAXIS, JAXIS, or KAXIS defined in constants.h fluxes : real array with space for fluxes, through one axis, for all cells of a block and for all flux variables. fluxes(VAR, i, j, k) is VAR's flux through the left cell face for cell i, j, k. dataSize : integer array specifying the dimensions for the array, fluxes dataSize (1) holds the number of cells provided in the i direction dataSize (2) holds the number of cells provided in the j direction if 1 d problem, set datasize(2) = 1 dataSize (3) holds the number of cells provided in the k direction if 1 or 2 d problem, set datasize(3) = 1 fluxes should contain space for fluxes of all cells in the block, including guardcells, and the fluxes must be correct for the interior cells of the block, as this interface does not know which cell fluxes the Grid will need to store. pressureSlot : If present and greater than zero, this indicates one flux variable in the fluxes array that may need special handling because it really scales like a flux; normally this would be pressure, but it could be another flux variable that the caller keeps in flux density form. areaLeft : areas of left and right faces, only used if special scaling is requested with the pressureSlot argument.
Specific implementations may ignore the optional dummy arguments, pressureSlot and areaLeft, if the corresponding Grid_conserveFluxes only implements handling of fluxes as flux densities (i.e., if Grid_conserveFluxes assumes that the fluxes stored by Grid_putFluxData and retrieved by Grid_getFluxData contain flux densities). For the Unform Grid, no implementation is provided, since there is never a need for flux correction. Any code calling this subroutine needs to know the explicit interface, since this interface contains optional dummy arguments and assumed-shape dummy arrays. Calling FORTRAN units should therefore contain a line like use Grid_interface, ONLY: Grid_putFluxData
Grid_getFluxData Grid_conserveFluxes hy_sweep