The OASIS Coupler Forum

  HOME

OASIS_GET/PUT not found although "use mod_oasis" statement don't trigger any error

Up to Installation and compilation

Posted by Anonymous at June 2 2021

Dear OASIS users,

I'm struggling quite much on compiling RegCM4.9, modified to include some subroutines of OASIS3-MCT4.0.

Oasis compilation itself does not bring any problems, and I could use Oasis with the tutorial run, but also with a local oceanic model called Symphonie: it works pretty well!

The problem now comes when trying to compile RegCM with oasis code inside. In particular, the compilation stops at the first module stating "use mod_oasis" and using oasis subroutines. However, there is no compilation error when passing the "use mod_oasis" line.

The error raised is as follows:

mpif90 -DOASIS -I/sirocco/desq/RegCM/external -DNETCDF_CDF5 -I/usr/local/include -I/usr/local/netcdf-fortran/4.4.5/ifort17.0.1.132/include -I/usr/local/include -I/usr/local/netcdf-fortran/4.4.5/ifort17.0.1.132/include -I/sirocco/desq/oasis3-mct/intel17_nuwa/build/lib/psmile.MPI1 -I/sirocco/desq/RegCM/Share -I./mpplib -I./clmlib -I./netlib -Ichemlib/GAS_CBMZ_NEW -I./chemlib -I./batslib -I./ocnlib -I./cumlib -I./microlib -I./cloudlib -I./radlib -I./pbllib -Iradlib/RRTMG_SW -I./clmlib/clm4.5 -DGIT_VER=\"4.9.4-10-g0bbba\" -ftz -ip -O3 -finline-functions -fp-model source -convert big_endian -assume byterecl -heap-arrays -fPIC -c mod_oasis_fields.F90 mod_oasis_fields.F90(188):

error #6285: There is no matching specific subroutine for this generic subroutine call. [OASIS_PUT] call oasis_put(snd_fld(n_snd)%fld_id,time,fld,ierr_snd) ---------^

mod_oasis_fields.F90(209): error #6285: There is no matching specific subroutine for this generic subroutine call. [OASIS_GET] call oasis_get(rcv_fld(n_rcv)%fld_id,time,fld,ierr_rcv) ---------^

As explicitely said in Oasis User guide, I only state "use mod_oasis"; I only include "$ARCHDIR/build/lib/psmile.MPI1"; and I only put the library "$ARCHDIR/lib/libpsmile.MPI1.a" (I already tried by putting everything to see if there any change though, with no further results). So it seems that the compiler finds mod_oasis but cannot recognize the subroutines called in it... The dependencies in the Makefile are well done (i guess ...?); I don't write mod_oasis.o in it but I just put the -I$ARCH.... as I wrote above.

Does anyone have any idea of what I am doing wrong? I have never been a genius in compiling so maybe I am missing a basic thing but I have no idea what... 

Thank you in advance, Quentin D.

Posted by Anonymous at June 3 2021

I reply to myself because I finally got the solution from someone I met just today... The error is raised because the arguments of the function are not of the same type as in oasis interface, thus oasis does not recognize the subroutine. In my case, the date was a real, whereas oasis wants an integer... A simple conversion solved it.

Cheers, Quentin D.

Posted by Anonymous at June 3 2021

Hi, 

Nice you found your error ! 

Best regards, Laure
Reply to this