#8 closed defect (fixed)
Compilation of FM on NAG Linux fails
Reported by: | frae | Owned by: | frcm |
---|---|---|---|
Priority: | normal | Milestone: | |
Component: | ROPP (all) | Version: | 0.8 |
Keywords: | Cc: |
Description
f95 -I../build -dusty -I/data/nwp1/frcm/ropp/naginclude -c -o ../refrac_1d/ropp_fm_refrac_1d.o `test -f '../refrac_1d/ropp_fm_refra
echo './'`../refrac_1d/ropp_fm_refrac_1d.f90 |
Error: ../refrac_1d/ropp_fm_refrac_1d.f90, line 80: USE ROPP_FM in program-unit ROPP_FM_REFRAC_1D_ECMWF imports symbol ROPP_FM_REFRAC_1 D_ECMWF
detected at ROPP_FM_REFRAC_1D@<end-of-statement> [f95 terminated - errors found by pass 1] make[1]: * refrac_1d/ropp_fm_refrac_1d.o Error 2 make[1]: Leaving directory `/net/home/h02/frae/temp/ropp_fm/build' make: * [all-recursive] Error 1
Note:
See TracTickets
for help on using tickets.
That's a problem occuring rather often, and related to the strictness of the NAG compiler when it comes to symbol names. What happens is that the NAG compiler does not accept if a routine or function loads a module which provides an interface for a routine/function of the same name; this works for all other compilers I know. Thus, upon loading the module, the particular interface needs to be renamed. So for a function foo, of which the interface is defined in foo_mod, a construct like this one is required:
In this particular case, I had renamed the actual function name(s), but not the renaming when using the modules... The problem also affected the adjoint and tangent linear versions, as well as the bending angle forward model; I have corrected all of them. There might be other subroutines or function in ropp_fm that exhibit the same problem; please report them here if this is the case, or close the ticket.
Thanks,