SUBROUTINE ana_tobc (ng, tile, model) ! !! git $Id$ !! svn $Id: ana_tobc.h 1151 2023-02-09 03:08:53Z arango $ !!====================================================================== !! Copyright (c) 2002-2023 The ROMS/TOMS Group ! !! Licensed under a MIT/X style license ! !! See License_ROMS.md ! !======================================================================= ! ! ! This routine sets tracer-type variables open boundary conditions ! ! using analytical expressions. ! ! ! !======================================================================= ! USE mod_param USE mod_grid USE mod_ocean USE mod_stepping ! ! Imported variable declarations. ! integer, intent(in) :: ng, tile, model ! ! Local variable declarations. ! character (len=*), parameter :: MyFile = & & __FILE__ ! #include "tile.h" ! CALL ana_tobc_tile (ng, tile, model, & & LBi, UBi, LBj, UBj, & & IminS, ImaxS, JminS, JmaxS, & & nstp(ng), & & GRID(ng) % z_r, & & OCEAN(ng) % t) ! ! Set analytical header file name used. ! #ifdef DISTRIBUTE IF (Lanafile) THEN #else IF (Lanafile.and.(tile.eq.0)) THEN #endif ANANAME(34)=MyFile END IF ! RETURN END SUBROUTINE ana_tobc ! !*********************************************************************** SUBROUTINE ana_tobc_tile (ng, tile, model, & & LBi, UBi, LBj, UBj, & & IminS, ImaxS, JminS, JmaxS, & & nstp, & & z_r, t) !*********************************************************************** ! USE mod_param USE mod_boundary USE mod_ncparam USE mod_ocean USE mod_scalars #ifdef SEDIMENT USE mod_sediment #endif ! ! Imported variable declarations. ! integer, intent(in) :: ng, tile, model integer, intent(in) :: LBi, UBi, LBj, UBj, nstp integer, intent(in) :: IminS, ImaxS, JminS, JmaxS #ifdef ASSUMED_SHAPE real(r8), intent(in) :: z_r(LBi:,LBj:,:) real(r8), intent(in) :: t(LBi:,LBj:,:,:,:) #else real(r8), intent(in) :: z_r(LBi:UBi,LBj:UBj,N(ng)) real(r8), intent(in) :: t(LBi:UBi,LBj:UBj,N(ng),3,NT(ng)) #endif ! ! Local variable declarations. ! integer :: i, ised, itrc, j, k ! real(r8) :: cff #include "set_bounds.h" ! !----------------------------------------------------------------------- ! Tracers open boundary conditions. !----------------------------------------------------------------------- ! #ifdef MY_APPLICATION IF (ANY(LBC(ieast,isTvar(:),ng)%acquire).and. & & DOMAIN(ng)%Eastern_Edge(tile)) THEN DO itrc=1,NT(ng) DO k=1,N(ng) DO j=JstrT,JendT BOUNDARY(ng)%t_east(j,k,itrc)=??? END DO END DO END DO END IF IF (ANY(LBC(iwest,isTvar(:),ng)%acquire).and. & & DOMAIN(ng)%Western_Edge(tile)) THEN DO itrc=1,NT(ng) DO k=1,N(ng) DO j=JstrT,JendT BOUNDARY(ng)%t_west(j,k,itrc)=??? END DO END DO END DO END IF IF (ANY(LBC(isouth,isTvar(:),ng)%acquire).and. & & DOMAIN(ng)%Southern_Edge(tile)) THEN DO itrc=1,NT(ng) DO k=1,N(ng) DO i=IstrT,IendT BOUNDARY(ng)%t_south(i,k,itrc)=??? END DO END DO END DO END IF IF (ANY(LBC(inorth,isTvar(:),ng)%acquire).and. & & DOMAIN(ng)%Northern_Edge(tile)) THEN DO itrc=1,NT(ng) DO k=1,N(ng) DO i=IstrT,IendT BOUNDARY(ng)%t_north(i,k,itrc)=??? END DO END DO END DO END IF #else ana_tobc.h: No values provided for BOUNDARY(ng)%t_xxxx. #endif ! RETURN END SUBROUTINE ana_tobc_tile