Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Lake Erie Test Case #25

Open
wants to merge 1 commit into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions LAKE_ERIE/Data/FRC/LakeErie_Pair_era5_short.nc
Git LFS file not shown
3 changes: 3 additions & 0 deletions LAKE_ERIE/Data/FRC/LakeErie_Qair_era5_short.nc
Git LFS file not shown
3 changes: 3 additions & 0 deletions LAKE_ERIE/Data/FRC/LakeErie_Tair_era5_short.nc
Git LFS file not shown
3 changes: 3 additions & 0 deletions LAKE_ERIE/Data/FRC/LakeErie_cloud_era5_short.nc
Git LFS file not shown
3 changes: 3 additions & 0 deletions LAKE_ERIE/Data/FRC/LakeErie_latent_era5_short.nc
Git LFS file not shown
3 changes: 3 additions & 0 deletions LAKE_ERIE/Data/FRC/LakeErie_lwrad_era5_short.nc
Git LFS file not shown
3 changes: 3 additions & 0 deletions LAKE_ERIE/Data/FRC/LakeErie_rain_era5_short.nc
Git LFS file not shown
3 changes: 3 additions & 0 deletions LAKE_ERIE/Data/FRC/LakeErie_sensible_era5_short.nc
Git LFS file not shown
3 changes: 3 additions & 0 deletions LAKE_ERIE/Data/FRC/LakeErie_shflux_era5_short.nc
Git LFS file not shown
3 changes: 3 additions & 0 deletions LAKE_ERIE/Data/FRC/LakeErie_snow_albedo_era5_short.nc
Git LFS file not shown
3 changes: 3 additions & 0 deletions LAKE_ERIE/Data/FRC/LakeErie_snow_thickness_era5_short.nc
Git LFS file not shown
3 changes: 3 additions & 0 deletions LAKE_ERIE/Data/FRC/LakeErie_snowfall_era5_short.nc
Git LFS file not shown
3 changes: 3 additions & 0 deletions LAKE_ERIE/Data/FRC/LakeErie_sustr_era5_short.nc
Git LFS file not shown
3 changes: 3 additions & 0 deletions LAKE_ERIE/Data/FRC/LakeErie_svstr_era5_short.nc
Git LFS file not shown
3 changes: 3 additions & 0 deletions LAKE_ERIE/Data/FRC/LakeErie_swflux_era5_short.nc
Git LFS file not shown
3 changes: 3 additions & 0 deletions LAKE_ERIE/Data/FRC/LakeErie_swrad_era5_short.nc
Git LFS file not shown
3 changes: 3 additions & 0 deletions LAKE_ERIE/Data/FRC/LakeErie_uwind_era5_short.nc
Git LFS file not shown
3 changes: 3 additions & 0 deletions LAKE_ERIE/Data/FRC/LakeErie_vwind_era5_short.nc
Git LFS file not shown
3 changes: 3 additions & 0 deletions LAKE_ERIE/Data/ROMS/roms_lake_erie_grd_1000m.nc
Git LFS file not shown
3 changes: 3 additions & 0 deletions LAKE_ERIE/Data/ROMS/roms_lake_erie_grd_1200m.nc
Git LFS file not shown
145 changes: 145 additions & 0 deletions LAKE_ERIE/Forward/ana_cloud.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,145 @@
!!
SUBROUTINE ana_cloud (ng, tile, model)
!
!! git $Id$
!!======================================================================
!! Copyright (c) 2002-2024 The ROMS/TOMS Group !
!! Licensed under a MIT/X style license !
!! See License_ROMS.txt !
!=======================================================================
! !
! This routine sets cloud fraction 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_cloud_tile (ng, tile, model, &
& LBi, UBi, LBj, UBj, &
& IminS, ImaxS, JminS, JmaxS, &
& FORCES(ng) % cloud)
!
! Set analytical header file name used.
!
#ifdef DISTRIBUTE
IF (Lanafile) THEN
#else
IF (Lanafile.and.(tile.eq.0)) THEN
#endif
ANANAME( 4)=MyFile
END IF
!
RETURN
END SUBROUTINE ana_cloud
!
!***********************************************************************
SUBROUTINE ana_cloud_tile (ng, tile, model, &
& LBi, UBi, LBj, UBj, &
& IminS, ImaxS, JminS, JmaxS, &
& cloud)
!***********************************************************************
!
USE mod_param
USE mod_scalars
!
#ifdef PAPA_CLM
USE dateclock_mod, ONLY : caldate
#endif
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) :: cloud(LBi:,LBj:)
#else
real(r8), intent(out) :: cloud(LBi:UBi,LBj:UBj)
#endif
!
! Local variable declarations.
!
integer :: i, j
!
real(r8) :: Cval
real(dp) :: yday

#ifdef PAPA_CLM
!
real(dp), dimension(14) :: Coktas = &
& (/ 6.29_r8, 6.26_r8, 6.31_r8, 6.31_r8, 6.32_r8, &
& 6.70_r8, 7.12_r8, 7.26_r8, 6.93_r8, 6.25_r8, &
& 6.19_r8, 6.23_r8, 6.31_r8, 6.29_r8 /)

real(dp), dimension(14) :: Cyday = &
& (/ 0.0_dp, 16.0_dp, 46.0_dp, 75.0_dp, 105.0_dp, &
& 136.0_dp, 166.0_dp, 197.0_dp, 228.0_dp, 258.0_dp, &
& 289.0_dp, 319.0_dp, 350.0_dp, 366.0_dp /)
#endif

#include "set_bounds.h"
!
!-----------------------------------------------------------------------
! Set analytical cloud fraction (%/100): 0=clear sky, 1:overcast sky.
!-----------------------------------------------------------------------
!
#if defined PAPA_CLM

! OWS Papa cloud climatology.
!
CALL caldate (tdays(ng), yd_dp=yday)
DO i=1,13
IF ((yday.ge.Cyday(i)).and.(yday.le.Cyday(i+1))) THEN
Cval=0.125_r8*(Coktas(i )*(Cyday(i+1)-yday)+ &
& Coktas(i+1)*(yday-Cyday(i)))/ &
& (Cyday(i+1)-Cyday(i))
ELSE
Cval=0.0_r8
END IF
END DO
#else
Cval=0.65_r8
#endif

DO j=JstrT,JendT
DO i=IstrT,IendT
cloud(i,j)=Cval
END DO
END DO
!
! Exchange boundary data.
!
IF (EWperiodic(ng).or.NSperiodic(ng)) THEN
CALL exchange_r2d_tile (ng, tile, &
& LBi, UBi, LBj, UBj, &
& cloud)
END IF

#ifdef DISTRIBUTE
CALL mp_exchange2d (ng, tile, model, 1, &
& LBi, UBi, LBj, UBj, &
& NghostPoints, &
& EWperiodic(ng), NSperiodic(ng), &
& cloud)
#endif
!
RETURN
END SUBROUTINE ana_cloud_tile
121 changes: 121 additions & 0 deletions LAKE_ERIE/Forward/ana_humid.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,121 @@
!!
SUBROUTINE ana_humid (ng, tile, model)
!
!! git $Id$
!! svn $Id$
!!======================================================================
!! Copyright (c) 2002-2024 The ROMS/TOMS Group !
!! Licensed under a MIT/X style license !
!! See License_ROMS.txt !
!=======================================================================
! !
! This routine sets surface air humidity (moisture) using an !
! analytical expression. There three types of humidity: !
! !
! 1) Absolute humidity: density of water vapor. !
! 2) Specific humidity: ratio of the mass of water vapor to !
! the mass of moist air cointaining the vapor (g/kg) !
! 3) Relative humidity: ratio of the actual mixing ratio to !
! saturation mixing ratio of the air at given temperature !
! and pressure (percentage). !
! !
!=======================================================================
!
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_humid_tile (ng, tile, model, &
& LBi, UBi, LBj, UBj, &
& IminS, ImaxS, JminS, JmaxS, &
& FORCES(ng) % Hair)
!
! Set analytical header file name used.
!
#ifdef DISTRIBUTE
IF (Lanafile) THEN
#else
IF (Lanafile.and.(tile.eq.0)) THEN
#endif
ANANAME( 9)=MyFile
END IF
!
RETURN
END SUBROUTINE ana_humid
!
!***********************************************************************
SUBROUTINE ana_humid_tile (ng, tile, model, &
& LBi, UBi, LBj, UBj, &
& IminS, ImaxS, JminS, JmaxS, &
& Hair)
!***********************************************************************
!
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) :: Hair(LBi:,LBj:)
#else
real(r8), intent(out) :: Hair(LBi:UBi,LBj:UBj)
#endif
!
! Local variable declarations.
!
integer :: i, j

#include "set_bounds.h"
!
!-----------------------------------------------------------------------
! Set analytical surface air humidity.
!-----------------------------------------------------------------------
!
#if defined LAKE_ICE
DO j=JstrT,JendT
DO i=IstrT,IendT
Hair(i,j)=0.8_r8
END DO
END DO
#else
ana_humidity.h: no values provided for Hair.
#endif
!
! Exchange boundary data.
!
IF (EWperiodic(ng).or.NSperiodic(ng)) THEN
CALL exchange_r2d_tile (ng, tile, &
& LBi, UBi, LBj, UBj, &
& Hair)
END IF

#ifdef DISTRIBUTE
CALL mp_exchange2d (ng, tile, model, 1, &
& LBi, UBi, LBj, UBj, &
& NghostPoints, &
& EWperiodic(ng), NSperiodic(ng), &
& Hair)
#endif
!
RETURN
END SUBROUTINE ana_humid_tile
Loading