Skip to content
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
12 changes: 6 additions & 6 deletions datm/atm_comp_nuopc.F90
Original file line number Diff line number Diff line change
Expand Up @@ -364,7 +364,7 @@ subroutine InitializeAdvertise(gcomp, importState, exportState, clock, rc)
! Validate sdat datamode
if (mainproc) write(logunit,*) ' datm datamode = ',trim(datamode)
select case (trim(datamode))
case ('CORE2_NYF','CORE2_IAF','CORE_IAF_JRA', &
case ('CORE2_NYF','CORE2_IAF','CORE_IAF_JRA', 'JRA55do', &
'CORE_RYF6162_JRA','CORE_RYF8485_JRA','CORE_RYF9091_JRA','CORE_RYF0304_JRA', &
'CLMNCEP','CPLHIST','GEFS','ERA5','SIMPLE')
if (mainproc) write(logunit,'(3a)') subname,'datm datamode = ',trim(datamode)
Expand Down Expand Up @@ -392,7 +392,7 @@ subroutine InitializeAdvertise(gcomp, importState, exportState, clock, rc)
case ('CORE2_NYF', 'CORE2_IAF')
call datm_datamode_core2_advertise(exportState, fldsExport, flds_scalar_name, rc)
if (ChkErr(rc,__LINE__,u_FILE_u)) return
case ('CORE_IAF_JRA', 'CORE_RYF6162_JRA', 'CORE_RYF8485_JRA', 'CORE_RYF9091_JRA', 'CORE_RYF0304_JRA')
case ('CORE_IAF_JRA', 'CORE_RYF6162_JRA', 'CORE_RYF8485_JRA', 'CORE_RYF9091_JRA', 'CORE_RYF0304_JRA', 'JRA55do')
call datm_datamode_jra_advertise(exportState, fldsExport, flds_scalar_name, rc)
if (ChkErr(rc,__LINE__,u_FILE_u)) return
case ('CLMNCEP')
Expand Down Expand Up @@ -659,7 +659,7 @@ subroutine datm_comp_run(gcomp, importState, exportState, target_ymd, target_tod
case('CORE2_NYF','CORE2_IAF')
call datm_datamode_core2_init_pointers(exportState, sdat, datamode, factorfn_mesh, factorfn_data, rc)
if (ChkErr(rc,__LINE__,u_FILE_u)) return
case ('CORE_IAF_JRA', 'CORE_RYF6162_JRA', 'CORE_RYF8485_JRA', 'CORE_RYF9091_JRA', 'CORE_RYF0304_JRA')
case ('CORE_IAF_JRA', 'CORE_RYF6162_JRA', 'CORE_RYF8485_JRA', 'CORE_RYF9091_JRA', 'CORE_RYF0304_JRA', 'JRA55do')
call datm_datamode_jra_init_pointers(exportState, sdat, rc)
if (ChkErr(rc,__LINE__,u_FILE_u)) return
case('CLMNCEP')
Expand All @@ -686,7 +686,7 @@ subroutine datm_comp_run(gcomp, importState, exportState, target_ymd, target_tod
select case (trim(datamode))
case('CORE2_NYF','CORE2_IAF','CORE_IAF_JRA',&
'CORE_RYF6162_JRA','CORE_RYF8485_JRA' ,&
'CORE_RYF9091_JRA','CORE_RYF0304_JRA' ,&
'CORE_RYF9091_JRA','CORE_RYF0304_JRA' , 'JRA55do', &
'CLMNCEP','CPLHIST','ERA5','GEFS','SIMPLE')
call dshr_restart_read(restfilm, rpfile, logunit, my_task, mpicom, sdat, rc)
if (ChkErr(rc,__LINE__,u_FILE_u)) return
Expand Down Expand Up @@ -737,7 +737,7 @@ subroutine datm_comp_run(gcomp, importState, exportState, target_ymd, target_tod
call datm_datamode_core2_advance(datamode, target_ymd, target_tod, target_mon, &
sdat%model_calendar, factorfn_mesh, rc)
if (ChkErr(rc,__LINE__,u_FILE_u)) return
case('CORE_IAF_JRA','CORE_RYF6162_JRA','CORE_RYF8485_JRA','CORE_RYF9091_JRA','CORE_RYF0304_JRA')
case('CORE_IAF_JRA','CORE_RYF6162_JRA','CORE_RYF8485_JRA','CORE_RYF9091_JRA','CORE_RYF0304_JRA', 'JRA55do')
call datm_datamode_jra_advance(exportstate, target_ymd, target_tod, sdat%model_calendar, rc)
if (ChkErr(rc,__LINE__,u_FILE_u)) return
case('CLMNCEP')
Expand All @@ -764,7 +764,7 @@ subroutine datm_comp_run(gcomp, importState, exportState, target_ymd, target_tod
select case (trim(datamode))
case('CORE2_NYF','CORE2_IAF','CORE_IAF_JRA',&
'CORE_RYF6162_JRA','CORE_RYF8485_JRA' ,&
'CORE_RYF9091_JRA','CORE_RYF0304_JRA' ,&
'CORE_RYF9091_JRA','CORE_RYF0304_JRA','JRA55do' ,&
'CLMNCEP','CPLHIST','ERA5','GEFS','SIMPLE')
call dshr_restart_write(rpfile, case_name, 'datm', inst_suffix, &
target_ymd, target_tod, logunit, my_task, sdat, rc)
Expand Down
42 changes: 34 additions & 8 deletions datm/datm_datamode_jra_mod.F90
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,9 @@ module datm_datamode_jra_mod
real(r8), pointer :: strm_Sa_u(:) => null()
real(r8), pointer :: strm_Sa_v(:) => null()
real(r8), pointer :: strm_Sa_shum(:) => null()
real(r8), pointer :: strm_Faxa_prec(:) => null()
real(r8), pointer :: strm_Faxa_prec(:) => null() ! Jra provides one precip flux
real(r8), pointer :: strm_Faxa_prrn(:) => null() ! Jra55do provides rainfall flux
real(r8), pointer :: strm_Faxa_prsn(:) => null() ! and Snowfall flux seperately
real(r8), pointer :: strm_Faxa_lwdn(:) => null()
real(r8), pointer :: strm_Faxa_swdn(:) => null()

Expand Down Expand Up @@ -120,6 +122,8 @@ end subroutine datm_datamode_jra_advertise
!===============================================================================
subroutine datm_datamode_jra_init_pointers(exportState, sdat, rc)

use shr_log_mod , only : shr_log_error

! input/output variables
type(ESMF_State) , intent(inout) :: exportState
type(shr_strdata_type) , intent(in) :: sdat
Expand Down Expand Up @@ -193,9 +197,19 @@ subroutine datm_datamode_jra_init_pointers(exportState, sdat, rc)
if (ChkErr(rc,__LINE__,u_FILE_u)) return

! initialize stream pointers
call shr_strdata_get_stream_pointer( sdat, 'Faxa_prec' , strm_Faxa_prec , requirePointer=.true., &
errmsg=subname//'ERROR: strm_Faxa_prec must be associated for jra datamode', rc=rc)
call shr_strdata_get_stream_pointer( sdat, 'Faxa_prec' , strm_Faxa_prec , rc=rc)
if (ChkErr(rc,__LINE__,u_FILE_u)) return
call shr_strdata_get_stream_pointer( sdat, 'Faxa_prrn' , strm_Faxa_prrn , rc=rc)
if (ChkErr(rc,__LINE__,u_FILE_u)) return
call shr_strdata_get_stream_pointer( sdat, 'Faxa_prsn' , strm_Faxa_prsn , rc=rc)
if (ChkErr(rc,__LINE__,u_FILE_u)) return

if ( .not. ((associated(strm_Faxa_prec) & !jra 55
.or. (associated(strm_Faxa_prrn) .and. associated(strm_Faxa_prsn))))) & !jra55do
call shr_log_error(subName//"ERROR: strm_Faxa_prec or (strm_Faxa_prrn and strm_Faxa_prsn) "//&
"must be associated for jra datamode", rc=rc)
if (ChkErr(rc,__LINE__,u_FILE_u)) return

call shr_strdata_get_stream_pointer( sdat, 'Faxa_swdn' , strm_Faxa_swdn , requirePointer=.true., &
errmsg=subname//'ERROR: strm_Faxa_swdn must be associated for jra datamode', rc=rc)
if (ChkErr(rc,__LINE__,u_FILE_u)) return
Expand Down Expand Up @@ -233,6 +247,7 @@ subroutine datm_datamode_jra_advance(exportstate, target_ymd, target_tod, model_
! local variables
integer :: n
integer :: lsize
logical :: jra55do
real(R8) :: avg_alb ! average albedo
real(R8) :: rday ! elapsed day
real(R8) :: cosFactor ! cosine factor
Expand All @@ -243,6 +258,12 @@ subroutine datm_datamode_jra_advance(exportstate, target_ymd, target_tod, model_

lsize = size(Sa_z)

if (associated(strm_Faxa_prrn) .and. associated(strm_Faxa_prsn)) then
jra55do = .true.
else
jra55do = .false.
endif

call shr_cal_date2julian(target_ymd, target_tod, rday, model_calendar)
rday = mod((rday - 1.0_R8),365.0_R8)
cosfactor = cos((2.0_R8*SHR_CONST_PI*rday)/365 - phs_c0)
Expand Down Expand Up @@ -273,12 +294,17 @@ subroutine datm_datamode_jra_advance(exportstate, target_ymd, target_tod, model_
! precipitation data
Faxa_rainc(n) = 0.0_R8 ! default zero
Faxa_snowc(n) = 0.0_R8
if (Sa_tbot(n) < tKFrz ) then ! assign precip to rain/snow components
Faxa_rainl(n) = 0.0_R8
Faxa_snowl(n) = strm_Faxa_prec(n)
if (jra55do) then
Faxa_snowl(n) = strm_Faxa_prsn(n) ! Snowfall flux
Faxa_rainl(n) = strm_Faxa_prrn(n) ! Rainfall flux
else
Faxa_rainl(n) = strm_Faxa_prec(n)
Faxa_snowl(n) = 0.0_R8
if (Sa_tbot(n) < tKFrz ) then ! assign precip to rain/snow components
Faxa_rainl(n) = 0.0_R8
Faxa_snowl(n) = strm_Faxa_prec(n)
else
Faxa_rainl(n) = strm_Faxa_prec(n)
Faxa_snowl(n) = 0.0_R8
endif
endif

! radiation data - fabricate required swdn components from net swdn
Expand Down