#1102: when using the file reader, mark variables not requested fro reading as fully read ---------------------+------------------------------------------------------ Reporter: rhaas | Owner: eschnett Type: defect | Status: review Priority: minor | Milestone: Component: Carpet | Version: Resolution: | Keywords: ---------------------+------------------------------------------------------
Comment (by rhaas):
Apparently I never actually posted my explanation to comment:2. Oh well. This is what I wanted to say:
I'll gladly remove the continue check since it just clutters the code.
As for the last hunk. This is an odd piece of code. My understanding was that the idea is to synchronize all variables that were read. When recovering from a checkpoint, then all variables are attempted to read so all might need synchronization (this is the != FILEREADER_DATA case). If on the other hand the file reader was used, then a variable is either to be read if either all variables are to be read (in which case ioUtilGH->do_inVars is NULL) or if do_inVars[vindex] is not zero (it can be positive or negative but for the file-reader should really be negative or one). This last logic is explained in line 623 of the code. So it seems as if the piece of code in line 802 is required to avoid sync'ing grid functions that were excluded from being read (and whose read_completely entry was set to true at the beginning of the read process). A more readable test might be:
{{{#!C if (not (called_from == FILEREADER_DATA and (ioUtilGH->do_inVars and not ioUtilGH->do_inVars[vindex])) ) { if (read_completely(... }}}