ROMS (COAWST) doesn't compile when biofennel is activated

Bug reports, work arounds and fixes

Moderators: arango, robertson

Post Reply
Message
Author
fagundesmo
Posts: 40
Joined: Wed Dec 03, 2014 1:46 am
Location: University of Georgia

ROMS (COAWST) doesn't compile when biofennel is activated

#1 Post by fagundesmo » Fri Oct 11, 2019 3:32 pm

Hi all,

I was wondering if you could help me out with this issue. I also have posted on the COAWST community but I couldn't attach all the log files and here the community is more active. I am trying to run parts of my model and see if everything works to make sure once I put all together they will work. So my last step is to add the biofennel module in COAWST. However, when I try to activate it gives me the error (see attached in logBioFennel_on.compile file) and when I undefine biofennel it compiles without a problem. I have tried to mess already by getting the diag.F from ROMS itself and I also have tried to remove the if def BIOLOGY inside of if def SOLVE3D, I also have tried to give values to the buffer variable and in this case it compiles but when I try to run it says the buffer size isn't enough. That's why I am posting here since everything I could have done by myself didn't work so maybe someone would know a way around it. I attached the log files and my .h and coawst.bash file. Thank you again in advance.

Cheers,

Matheus
Attachments
logBioFennel_on.txt
(391.89 KiB) Downloaded 10 times
logBioFennel_off.txt
(412.82 KiB) Downloaded 8 times
coawst.bash
(20.3 KiB) Downloaded 9 times
mexicotides.h
(4 KiB) Downloaded 10 times

fagundesmo
Posts: 40
Joined: Wed Dec 03, 2014 1:46 am
Location: University of Georgia

Re: ROMS (COAWST) doesn't compile when biofennel is activated

#2 Post by fagundesmo » Fri Oct 11, 2019 5:47 pm

I would like to point it out that I was able to "fix" by modifying the following in the diag.F (coawst/ROMS/nonlinear/):

!
! Local variable declarations.
!
#ifdef BIOLOGY
integer :: ibt, itrc
#endif
integer :: NSUB, i, ispace, j, k, trd
integer :: my_max_Ci, my_max_Cj, my_max_Ck
#ifdef DISTRIBUTE
# ifdef SOLVE3D
# ifdef BIOLOGY
integer :: Nreduce
# else
integer, parameter :: Nreduce = 5
# endif
integer, parameter :: Ncourant = 7
# else
integer, parameter :: Nreduce = 4
integer, parameter :: Ncourant = 5
# endif
real(r8), dimension(Nreduce) :: buffer
real(r8), dimension(Ncourant) :: Courant
character (len=3), dimension(Nreduce) :: op_handle
character (len=6), dimension(Nreduce) :: C_handle
#else
integer :: my_threadnum
#endif

To

!
! Local variable declarations.
!
#ifdef BIOLOGY
integer :: ibt, itrc
#endif
integer :: NSUB, i, ispace, j, k, trd
integer :: my_max_Ci, my_max_Cj, my_max_Ck
#ifdef DISTRIBUTE
# ifdef SOLVE3D
# ifdef BIOLOGY
integer :: Nreduce
# else
integer, parameter :: Nreduce = 5
# endif
integer, parameter :: Ncourant = 7
# else
integer, parameter :: Nreduce = 4
integer, parameter :: Ncourant = 5
# endif
real(r8), dimension(5) :: buffer
real(r8), dimension(Ncourant) :: Courant
character (len=3), dimension(5) :: op_handle
character (len=6), dimension(5) :: C_handle
#else
integer :: my_threadnum
#endif

I am in the point where I just have IC for the biofennel model so I don't how this change could play out once I start forcing at the boundaries. I am also aware that this might not be the right way of doing it so if anyone still knows how to change it properly I would greatly appreciate it.

Cheers

Post Reply