I'm new to the ROMS community and currently attempting to implement analytical air pressure changes in space, specifically across latitudes. To achieve this, I attempted to incorporate the latitude variable into my pair functions. Here's what I've tried so far:
Code: Select all
CALL ana_pair_tile (ng, tile, model, &
& LBi, UBi, LBj, UBj, &
& IminS, ImaxS, JminS, JmaxS, &
#ifdef SPHERICAL
& GRID(ng) % latr, &
#else
& GRID(ng) % yr, &
#endif
& FORCES(ng) % Pair)
Code: Select all
CALL ana_pair_tile (ng, tile, model, &
& LBi, UBi, LBj, UBj, &
& IminS, ImaxS, JminS, JmaxS, &
& FORCES(ng) % Pair)
Code: Select all
analytical.f90:405.38:
& GRID(ng) % latr, &
1
Error: Symbol 'grid' at (1) has no IMPLICIT type
make: *** [/home/hyc006/ROMS_OLD/runs/shallow_no_island/shallow_0416_ana/Build_romsM/analytical.o] Error 1
Code: Select all
SUBROUTINE ana_pair (ng, tile, model)
!
!! svn $Id: ana_pair.h 1054 2021-03-06 19:47:12Z arango $
!!======================================================================
!! Copyright (c) 2002-2021 The ROMS/TOMS Group !
!! Licensed under a MIT/X style license !
!! See License_ROMS.txt !
!=======================================================================
! !
! This routine sets surface air pressure (mb) using an analytical !
! expression. !
! !
!=======================================================================
!
USE mod_param
USE mod_forces
USE mod_ncparam
!
! Imported variable declarations.
!
integer, intent(in) :: ng, tile, model
!
! Local variable declarations.
!
character (len=*), parameter :: MyFile = &
& __FILE__
!
#include "tile.h"
!
CALL ana_pair_tile (ng, tile, model, &
& LBi, UBi, LBj, UBj, &
& IminS, ImaxS, JminS, JmaxS, &
#ifdef SPHERICAL
& GRID(ng) % latr, &
#else
& GRID(ng) % yr, &
#endif
& FORCES(ng) % Pair)
!
!
! CALL ana_pair_tile (ng, tile, model, &
! & LBi, UBi, LBj, UBj, &
! & IminS, ImaxS, JminS, JmaxS &
!#ifdef SPHERICAL
! & GRID(ng) % latr, &
!#else
! & GRID(ng) % yr, &
!#endif
! & FORCES(ng) % Pair)
!
! Set analytical header file name used.
!
#ifdef DISTRIBUTE
IF (Lanafile) THEN
#else
IF (Lanafile.and.(tile.eq.0)) THEN
#endif
ANANAME(17)=MyFile
END IF
!
RETURN
END SUBROUTINE ana_pair
!
!***********************************************************************
SUBROUTINE ana_pair_tile (ng, tile, model, &
& LBi, UBi, LBj, UBj, &
& IminS, ImaxS, JminS, JmaxS, &
#ifdef SPHERICAL
& latr, &
#else
& yr, &
#endif
& Pair)
!***********************************************************************
!
USE mod_param
USE mod_scalars
!
USE exchange_2d_mod, ONLY : exchange_r2d_tile
#ifdef DISTRIBUTE
USE mp_exchange_mod, ONLY : mp_exchange2d
#endif
!
! Imported variable declarations.
!
integer, intent(in) :: ng, tile, model
integer, intent(in) :: LBi, UBi, LBj, UBj
integer, intent(in) :: IminS, ImaxS, JminS, JmaxS
!
#ifdef ASSUMED_SHAPE
real(r8), intent(out) :: Pair(LBi:,LBj:)
#else
real(r8), intent(out) :: Pair(LBi:UBi,LBj:UBj)
#endif
# ifdef SPHERICAL
real(r8), intent(in) :: latr(LBi:,LBj:)
# else
real(r8), intent(in) :: yr(LBi:,LBj:)
# endif
!
! Local variable declarations.
!
integer :: i, j
real(r8) :: Lat_all, Lat_move, Tilt
#include "set_bounds.h"
!
!-----------------------------------------------------------------------
! Set analytical surface air pressure (mb).
! (1 mb = 100 Pa = 1 hPa, 1 bar = 1.0e+5 N/m2 = 1.0e+5 dynes/cm2).
!-----------------------------------------------------------------------
!
#if defined BENCHMARK
DO j=JstrT,JendT
DO i=IstrT,IendT
Pair(i,j)=1025.0_r8
END DO
END DO
#elif defined BL_TEST
DO j=JstrT,JendT
DO i=IstrT,IendT
Pair(i,j)=1013.48_r8
END DO
END DO
#elif defined SHALLOW || SHALLOWNI
Lat_all = latr(IendT,JendT) - latr(1,1)
DO j=JstrT,JendT
DO i=IstrT,IendT
Lat_move = latr(i,j)-latr(1,1)
Tilt = (Lat_move - (Lat_all/2))*0.0066
Pair(i,j)=1013.25_r8 + 9.81_r8 * rho0 *Tilt
END DO
END DO
#else
ana_pair.h: no values provided for Pair.
#endif
!
! Exchange boundary data.
!
IF (EWperiodic(ng).or.NSperiodic(ng)) THEN
CALL exchange_r2d_tile (ng, tile, &
& LBi, UBi, LBj, UBj, &
& Pair)
END IF
#ifdef DISTRIBUTE
CALL mp_exchange2d (ng, tile, model, 1, &
& LBi, UBi, LBj, UBj, &
& NghostPoints, &
& EWperiodic(ng), NSperiodic(ng), &
& Pair)
#endif
!
RETURN
END SUBROUTINE ana_pair_tile