The OASIS Coupler Forum

  HOME

Compiling WRF with new OASIS

Up to Installation and compilation

Posted by Anonymous at March 28 2022

I successfully compiled the latest version of oasis3-mct

But when I try to compile WRF+OASIS I get an error

module_cpl_oasis3.f90(174): error #6285: There is no matching specific subroutine for this generic subroutine call.   [OASIS_DEF_VAR]
               CALL oasis_def_var(ssnd(jw,je,jf)%nid, ssnd(jw,je,jf)%clname, id_part, (/2,1/), OASIS_Out, ishape, OASIS_Real,ierror)
--------------------^
module_cpl_oasis3.f90(198): error #6285: There is no matching specific subroutine for this generic subroutine call.   [OASIS_DEF_VAR]
               CALL oasis_def_var(srcv(jw,je,jf)%nid, srcv(jw,je,jf)%clname, id_part, (/2,1/), OASIS_In , ishape, OASIS_Real,ierror)
--------------------^
compilation aborted for module_cpl_oasis3.f90 (code 1)


It seems that  there is no subroutine oasis_def_var in oasis3-mct.
I found only subroutine oasis_def_var_v1 and subroutine oasis_def_var_v2.
And WRF calls oasis_def_var.

Is it possible to make WRF compatible with the new oasis3-mct?

Posted by Anonymous at March 29 2022

Hi,
oasis_def_var is an interface to oasis_def_var_V1 and oasis_def_var_V2, so calling oasis_def_var is what you should do. You certainly have a problem when linking the oasis3-mct library at compilation. You should double check this.
  Regards,
 Sophie

Posted by Anonymous at April 6 2022

I am having the same error in our model. Based from the docs, ishape is supposed to be a 1d array but here I believe it was defined as a 2d array. However, passing a 2d ishape worked just fine for previous OASIS versions until it didn't on OASIS v5.0. Can't a 2d ishape work in OASIS v5.0 just like in previous OASIS versions?

Here's our oasis_def_var usage for reference: https://github.com/parflow/parflow/blob/master/pfsimulator/amps/oas3/oas_pfl_define.F90#L288

Posted by Anonymous at April 6 2022

I am having the same error in our model. Based from the docs, ishape is supposed to be a 1d array but here I believe it was defined as a 2d array. However, passing a 2d ishape worked just fine for previous OASIS versions until it didn't on OASIS v5.0. Can't a 2d ishape work in OASIS v5.0 just like in previous OASIS versions?

Here's our oasis_def_var usage for reference: https://github.com/parflow/parflow/blob/master/pfsimulator/amps/oas3/oas_pfl_define.F90#L288

Posted by Anonymous at April 6 2022

Hi,
I had the same problem when I recompiled nemo with OASIS3-MCT_5.0. I don't understand the problem as we have now a generic interface for oasis_def_var, i.e. oasis_def_var_v1 and oasis_def_var_v2, and oasis_def_var_v1 is the same than in OASIS3-MCT_4.0 or OASIS3-MCT_3.0. So it should be upward compatible (but it is not). I have to understand that but in the mean time, you can simply remove the argument ishape; your call will now fit the oasis_def_var_v2 and it should work. At least, it worked for me. Can you try and let me know?
  Sophie

Posted by Anonymous at April 7 2022

I successfully recompiled WRF with OASIS3-MCT_4.0.

It seems that WRF uses
INTEGER :: ishape(2,2)
while OASIS_5.0 requires
INTEGER :: ishape(4)

Posted by Anonymous at April 7 2022

Hi Sophie,

Removing ishape works. However it would be difficult to implement this fix since I don't own the codes. I was hoping we could upgrade to OASIS v5 without changing our codebase.

You can replicate the issue by compiling the test Fortran code below with
different OASIS versions. 

```
program def_var_test
  use mod_oasis

  integer  :: vid
  integer  :: part_id
  integer  :: var_nodims(2)
  integer  :: ierror
  integer  :: ishape(2,2)  ! ishape is 2d on some legacy codes

  ! Set dummy values
  var_nodims(1) = 2
  var_nodims(2) = 1
  ishape(1,1)   = 1
  ishape(2,1)   = 5
  ishape(1,2)   = 1
  ishape(2,2)   = 5

  ! compiles on OASIS v2,0-4.0, but not on v5.0
  call prism_def_var_proto ( vid, "DUMMY", part_id,  &
                             var_nodims, PRISM_Out, ishape, PRISM_Real, ierror )

end program def_var_test
```

Posted by Anonymous at April 14 2022

Hi,
I will check what we can do and I will be back to you!
 Sophie
Reply to this