fabm-model/fabm

register_diagnostic_variable - no matching specific subroutine

jornbr opened this issue · 4 comments

Do you resolve it? I have the similar issue as:
error #8486: There is no matching specific subroutine for this type bound generic subroutine call. [REGISTER_DIAGNOSTIC_VARIABLE]

Originally posted by @bwang63 in #9 (comment)

This is likely a different issue than the one you commented on (#9 was an ERSEM issue that has been fixed). Which code line triggers this error?

It seems GitHub views your error message as an e-mail address and masks it accordingly. You might want to edit it before sending, e.g., by removing any @.

In any case, "do" and "do_column" have different function and syntax, even though both process the pelagic. "do" is preferred, as it allows FABM and the host model to decide in which order points in space are processed (typically that will be along the first dimension in Fortran). "do_column" processes one water column at a time (the spatial loop is forced to be in the vertical), either top-to-bottom (the default) or bottom-to-top. This is required for processes in which the values in one cell depend on the values above or below it. This is notably the case for light transmission and attenuation.

Note that these routines have different syntax:

subroutine do(self, _ARGUMENTS_DO_)
   class (...), intent(in) :: self
   _DECLARE_ARGUMENTS_DO_

   _LOOP_BEGIN_
      ...
   _LOOP_END_
end subroutine do

versus

subroutine do_column(self, _ARGUMENTS_DO_COLUMN_)
   class (...), intent(in) :: self
   _DECLARE_ARGUMENTS_DO_COLUMN_

   _DOWNWARD_LOOP_BEGIN_
      ...
   _DOWNWARD_LOOP_END_
end subroutine do_column

(DOWNWARD could be replaced by UPWARD as needed)

I would need to see a code snippet to understand better what might be going wrong in your case.

Closing this issue given the lack of further responses.