6. Output from mcarats executable
Format
The general format of "mcarats" output file is as follows:
header
data
header
data
header
data
...
For example, see ./examples/case3/out_rs0067-f3d. A set of one header section and one data section corresponds to one definition of radiation source in the input configuration file (see ./examples/case3/conf_rs0067). Thus the number of sets of the header and data sections is equal to "nsrc" in the configuration file.
Header section
At the beginning of the output file, header information are recorded. The following is an example:
%mcarats-0.9
1 : isrc
0 : isolver
1.00000E+09 : ptot
64 64 0 0 : nx, ny, nzf, nzh
64 64 1 : nxr, nyr, nrdc
600 450 0 : nxc, nyc, ncam
513 257 0 : nxp, nyp, npot
Notations are as follows:
solver: radiative transfer solver; 0 for Fully 3-D (F3D) scheme, 1 for Partially-3-D (P3D) scheme, and 2 for ICA
ptot: total number of source photons.
nx, ny: numbers of x and y-grids, respectively, for fluxes and heating rates
nzf: number of z-grids for fluxes
nzh: number of z-grids for heating rates
nxr, nyr: numbers of x and y-grids, respectively, for radiances
nrdc: number of definitions of radiances
nxc, nyc: numbers of x and y-grids, respectively, for camera image radiances
ncam: number of cameras
nppot, nqpot: numbers of pathlength bins and FOV angle bins, respectively, for the local fluxes
npot: number of specifications of local flux
Fortran 77 source codes to read/write the header are provided in the package:
./src/libmcarats/getmchdr.f and ./src/libmcarats/putmchdr.f.
Data section
The data section contains five subsections for fluxes, heating rates, radiances, camera radiances, and local fluxes. Each subsections are written by codes such like the followings:
Flux subsection:
if (nzf .gt. 0) then
do iflx = 1, 3
write (iuo, '(a, i6)', err=101) '# iflx= ', iflx
do izf = 1, nzf
write (iuo, *) ((pflx(ix, iy, izf, iflx), ix = 1, nx), iy = 1, ny)
end do
end do
end if
Heating rate subsection:
if (nzh .gt. 0) then
write (iuo, '(a)', err=101) '# heating rate'
do izh = 1, nzh
write (iuo, *) ((phrt(ix, iy, izh), ix = 1, nx), iy = 1, ny)
end do
end if
Radiance & air mass factor) subsection:
do imom = 1, 2
do irdc = 1, nrdc
write (iuo, '(a, 2i6)', err=101) '# irdc, imom: ', irdc, imom
write (iuo, *) ((prdc(ixr, iyr, imom, irdc), ixr = 1, nxr), iyr = 1, nyr)
end do
end do
Note that prdc is radiance (imom=1) or AMF (imom=2).
Camera radiance subsection:
do icam = 1, ncam
write (iuo, '(a, i6)', err=101) '# icam= ', icam
write (iuo, *) ((pcam(ixc, iyc, icam), ixc = 1, nxc), iyc = 1, nyc)
end do
Local flux subsection:
do ipot = 1, npot
write (iuo, '(a, 2i6)', err=101) '# iopot, ipot= ', 1, ipot
write (iuo, *) ((ppot(ippot, iqpot, 1, ipot), ippot = 1, nppot), iqpot = 1, nqpot)
!// contributions from all events
write (iuo, '(a, 2i6)', err=101) '# iopot, ipot= ', 2, ipot
write (iuo, *) ((ppot(ippot, iqpot, 2, ipot), ippot = 1, nppot), iqpot = 1, nqpot)
!// contributions from source emission plus single scattering
end do
See, for example,
./examples/case3/out*.
Reading the output
The output files can be read in the same way in ./src/process/pconvert.f, for example.