Couple of notes on Metro core
Firstly, to me it seems that this block of code in macadam.c is superfluous:
for (i=0; i<nNbrTimeSteps; i++){ stIR.pdArray[i] = dpFI[i]; }
As far as I can tell the IR array is always overwritten later so this block is probably unnecessary.
Another thing is the behaviour of Metro when coupling is not performed. In macadam.c we find the following:
if(bpNoObs[1]){
/* less than 3 hours of observation in the coupling */
if(!bSilent){
printf("Less than 3 hours of overlap between the\n");
printf("forecast and the road observations. Not enough ");
printf("data for coupling.\n");
}
f77name(makitp)(dpItp, &stTemperatureDepth.nSize, &nIR40, &bFlat, &(dpTimeO[0]),
&(dpRTO[0]), &(dpDTO[0]), &(dpTAO[0]), &dDiff,
&dMLon, npSwo, stTemperatureDepth.pdArray, &bDeepTemp, &dDeepTemp);
f77name(initial)(dpItp , (dpRTO+1), (dpDTO+1), (dpTAO+1), &nOne,
&nLenObservation, &stTemperatureDepth.nSize, &nIR40,
&bFlat, npSwo, dpCapacity, dpConductivity);
nNtp2 = nLenObservation - nDeltaTIndice;
}
The last line here is what somewhat confuses me. It seems to imply that the use of atmospheric data history is omitted in this case, and only the subsurface temperature profile is initialised. This means that certain parameters will be uninitialised when entering the forecast routine proper, road water content being the most obvious one. Wouldn't it be more reasonable to run the full forecast history here to properly "spin up" the model?
In terms of code, this would be something like:
nNtp2 = 1;