No 'implicit type' for boundary conditions

Report or discuss software problems and other woes

Moderators: arango, robertson

Post Reply
Message
Author
mathieudever

No 'implicit type' for boundary conditions

#1 Unread post by mathieudever »

Hi,

I set up my boundary conditions in a "channel" configuration, with a flow going from the northern boundary to the southern boundary. Here is the boundary conditions definition in my ocean*.in file:

Code: Select all

!                   W       S       E       N
!                   e       o       a       o
!                   s       u       s       r
!                   t       t       t       t
!                           h               h
!
!                   1       2       3       4

   LBC(isFsur) ==   Clo     Rad     Clo     Cla         ! free-surface
   LBC(isUbar) ==   Clo     Rad     Clo     Cla         ! 2D U-momentum
   LBC(isVbar) ==   Clo     Rad     Clo     Cla         ! 2D V-momentum
   LBC(isUvel) ==   Clo     Rad     Clo     Cla         ! 3D U-momentum
   LBC(isVvel) ==   Clo     Rad     Clo     Cla         ! 3D V-momentum
   LBC(isMtke) ==   Clo     Rad     Clo     Cla         ! mixing TKE

   LBC(isTvar) ==   Clo     Rad     Clo     Cla \       ! temperature
                    Clo     Rad     Clo     Cla         ! salinity

! Adjoint-based algorithms can have different lateral boundary
! conditions keywords.

ad_LBC(isFsur) ==   Clo     Rad     Clo     Cla         ! free-surface
ad_LBC(isUbar) ==   Clo     Rad     Clo     Cla         ! 2D U-momentum
ad_LBC(isVbar) ==   Clo     Rad     Clo     Cla         ! 2D U-momentum
ad_LBC(isUvel) ==   Clo     Rad     Clo     Cla         ! 3D U-momentum
ad_LBC(isVvel) ==   Clo     Rad     Clo     Cla         ! 3D V-momentum
ad_LBC(isMtke) ==   Clo     Rad     Clo     Cla         ! mixing TKE

ad_LBC(isTvar) ==   Clo     Rad     Clo     Cla \       ! temperature
                    Clo     Rad     Clo     Cla         ! salinity

I specify the value at the "Clamped" boundary using the analytical files

Code: Select all

#define ANA_FSOBC
#define ANA_M2OBC
#define ANA_M3OBC
#define ANA_TOBC
But when I compile, ROMS tells me that the 3D velocities have "no implicit type"

Code: Select all

cd /Users/dever_mathieu/ROMS/Projects/coastal_current/Build; /usr/local/bin/gfortran -c -frepack-arrays -O3 -ffree-form -ffree-line-length-none analytical.f90
analytical.f90:1278.19:

      IF (LBC(ieast,isUvel,ng)%acquire.and.                             &
                   1
Error: Symbol 'ieast' at (1) has no IMPLICIT type
analytical.f90:1317.20:

      IF (LBC(inorth,isUvel,ng)%acquire.and.                            &
                    1
Error: Symbol 'inorth' at (1) has no IMPLICIT type
analytical.f90:1304.20:

      IF (LBC(isouth,isUvel,ng)%acquire.and.                            &
                    1
Error: Symbol 'isouth' at (1) has no IMPLICIT type
analytical.f90:1291.19:

      IF (LBC(iwest,isUvel,ng)%acquire.and.                             &
                   1
Error: Symbol 'iwest' at (1) has no IMPLICIT type
make: *** [/Users/dever_mathieu/ROMS/Projects/coastal_current/Build/analytical.o] Error 1
While they are clearly defined in the ANA_M3OBC.h file

Code: Select all

# elif defined COASTAL_CURRENT
      IF (LBC(ieast,isUvel,ng)%acquire.and.                             &
    &    LBC(ieast,isVvel,ng)%acquire.and.                             &
    &    DOMAIN(ng)%Eastern_Edge(tile)) THEN
        DO k=1,N(ng)
          DO j=JstrR,JendR
            BOUNDARY(ng)%u_east(j,k)=0.0_r8
          END DO
          DO j=Jstr,JendR
            BOUNDARY(ng)%v_east(j,k)=0.0_r8
          END DO
        END DO
      END IF
Is my problem coming from the fact that the velocity is zero? That would not make sense. It is also odd that only the 3D velocity generates and error and the 2D velocity is fine, even though they are also zeros...

Can someone has an idea what is going on?
Thank you!
Mat.

User avatar
kate
Posts: 4091
Joined: Wed Jul 02, 2003 5:29 pm
Location: CFOS/UAF, USA

Re: No 'implicit type' for boundary conditions

#2 Unread post by kate »

iwest, inorth, etc are all defined in mod_scalars.F. At the top of routine ana_m2obc_tile you can see a "USE mod_scalars". At the top of routine ana_m3obc_tile it is missing. Clearly, it needs to be added. Feel free to add it and any other USE statements that are required.

mathieudever

Re: No 'implicit type' for boundary conditions

#3 Unread post by mathieudever »

Thank you Kate, your advice fixed the problem. Just out of curiosity, why has the statement "USE mod_scalars" been left out? Is it a mistake or is it voluntarily not included for a specific reason?

In any case, thanks again!
Mat.

User avatar
kate
Posts: 4091
Joined: Wed Jul 02, 2003 5:29 pm
Location: CFOS/UAF, USA

Re: No 'implicit type' for boundary conditions

#4 Unread post by kate »

It just means that Hernan has not yet set up a case where it needed to be there. When he makes changes, he runs a suite of test problems, but those clearly don't include a case where that USE statement is required.

When playing with ROMS, it's useful to actually read all the errors and warnings you get.

User avatar
arango
Site Admin
Posts: 1367
Joined: Wed Feb 26, 2003 4:41 pm
Location: DMCS, Rutgers University
Contact:

Re: No 'implicit type' for boundary conditions

#5 Unread post by arango »

The analytical suite of routines give the user a clear interface to communicate with the ROMS kernel. Everybody loves them... They are great for playing with toy problems of different kinds. All the files in the ROMS/Funtionals or User/Functionals are provided as examples on how to use this interface. This is user code and it is impossible for us to provide all the possible combinations of usage out there. It is the user responsibility to include the appropriate modules in their customized versions.

It also gives the user the opportunity to learn ROMS more intimately. And learn/practice Fortran 90/95, parallelism, and so on... It is like your ROMS homework 8)

Post Reply