Problem
If you try to load the samples file "gg_ml.tmpl", it can fail because that one is not in the usual samples location but in "ifs_samples". Normally you extend the ECCODES_SAMPLES_PATH to include the ifs_samples directory. But with MEMFS the samples (and also definitions) are not installed (instead they are all embeddedwithin the library.
So for example let's say we have the following Fortran program that loads 2 samples:
program sample
use eccodes
implicit none
integer :: s1, s2, section4Length
! Try to load an IFS sample: ifs_samples/grib1_mlgrib2/gg_ml.tmpl
call codes_grib_new_from_samples(s1, "gg_ml")
call codes_get(s1, 'section4Length', section4Length)
write (*, *) 'IFS sample gg_ml: section4Length=', section4Length
call codes_release(s1)
! Try to load a core sample: samples/GRIB2.tmpl
call codes_grib_new_from_samples(s2, "GRIB2")
call codes_get(s2, 'section4Length', section4Length)
write (*, *) 'Core sample GRIB2: section4Length=', section4Length
call codes_release(s2)
end program sample
Compile and run the program. It should fail:
% ./sample.exe ECCODES ERROR : Unable to load sample file 'gg_ml.tmpl' from /MEMFS/samples ECCODES ERROR : grib_new_from_samples: (gg_ml) File not found
Solution
Extend the samples path to search in the IFS samples location too (by setting the ECCODES_SAMPLES_PATH environment variable):
% export ECCODES_SAMPLES_PATH=/MEMFS/ifs_samples/grib1_mlgrib2:/MEMFS/samples % ./sample.exe IFS sample gg_ml: section4Length= 770 Core sample GRIB2: section4Length= 34 # Now it works fine