Skip to content
Merged
Show file tree
Hide file tree
Changes from 84 commits
Commits
Show all changes
88 commits
Select commit Hold shift + click to select a range
c3a437a
changed cplhist and multilev_cplhist taxmode from extend to cycle
mvertens May 12, 2025
b487eb5
add stream mapping from a mapping file
mvertens Nov 12, 2025
ebdfb4f
new mapping capability from a map file
mvertens Nov 25, 2025
bda0ad2
make stream to export state copies explicit and separate out non data…
mvertens Dec 15, 2025
24b8fa7
refactored datm and dice to explicitly use stream data pointers
mvertens Dec 16, 2025
13ab1c5
refactored datm
mvertens Dec 18, 2025
1330bda
refactored docn, dice and dlnd stream usage
mvertens Dec 18, 2025
a7d27bd
updated to feature/new_datm_optional_streams
mvertens Dec 20, 2025
84383ee
Merge remote-tracking branch 'mvertens/feature/refactor_docn_dice_dln…
mvertens Dec 22, 2025
e13cf24
updated to feature/new_datm_optional_streams
mvertens Dec 22, 2025
8d4d313
updated CMakeLists.txt to match feature/new_datm_optional_streams
mvertens Dec 22, 2025
0b01ef7
updated to feature/new_datm_optional_streams
mvertens Dec 22, 2025
3fe54b6
udpated streams share code feature/fix_unstructured_multilev_input
mvertens Dec 24, 2025
49937f2
updated datm code
mvertens Dec 24, 2025
34e979b
updated rof_comp_nuopc.F90 to work with preseting of stream and expor…
mvertens Dec 24, 2025
dd43ff4
more refactoring
mvertens Dec 25, 2025
6a70d64
Merge remote-tracking branch 'mvertens/feature/new_datm_optional_stre…
mvertens Dec 25, 2025
d54c309
refactor to make stream pointers explicit rather than use dfields
mvertens Dec 26, 2025
467cfc0
changed _dom_ to _sstdata_ for datm files
mvertens Dec 26, 2025
9d7df53
fixed compilation problems
mvertens Dec 26, 2025
8ce7070
some fixes for runtime errors
mvertens Dec 26, 2025
7006dc2
run time fixes for datm_datamode_clmncep_mod.F90
mvertens Dec 26, 2025
9801381
more fixes for runtime problems
mvertens Dec 26, 2025
3b4633d
update to documentation
mvertens Dec 27, 2025
a8280f9
Merge branch 'feature/fix_unstructured_multilev_input' into feature/r…
mvertens Dec 30, 2025
b276dae
Merge branch 'noresm' into feature/refactor_stream_usage
mvertens Dec 31, 2025
7abb3d0
Merge branch 'feature/new_datm_optional_streams' into feature/refacto…
mvertens Dec 31, 2025
c28734e
Merge remote-tracking branch 'mvertens/feature/escomp_new_datm_option…
mvertens Jan 4, 2026
9a366c7
replaced trim(subname) with subname and character(*) with character(l…
mvertens Jan 5, 2026
6eac9d1
backed out change to .github/workflows/extbuild.yml
mvertens Jan 5, 2026
cb57b4b
Merge remote-tracking branch 'mvertens/feature/new_datm_optional_stre…
mvertens Jan 6, 2026
29690ef
removed unnecessary commented section and cleaned up typo
mvertens Jan 6, 2026
7bcb202
minor editing changes
mvertens Jan 6, 2026
06bdf5f
minor changes to get PR aligned with corresponding ESCOMP CDEPS PR
mvertens Jan 6, 2026
04dc7f9
Merge branch 'feature/new_datm_optional_streams' into feature/refacto…
mvertens Jan 6, 2026
b783bf7
more cleanup changes
mvertens Jan 8, 2026
ee948d4
Merge branch 'feature/new_datm_optional_streams' into feature/new_map…
mvertens Jan 8, 2026
1d6b3a7
removed DEBUG print statement
mvertens Jan 8, 2026
620d15c
updated share to escomp/main since this is only used by UFS and will …
mvertens Jan 9, 2026
2b5fca7
fixed typo
mvertens Jan 9, 2026
2e60aed
updated testlist_dglc.xml to be consistent with escomp/main
mvertens Jan 9, 2026
7d6db27
updated datm/buildnml to be up to date with escomp/main
mvertens Jan 9, 2026
e5915ac
updated workflows to be up to date with escomp/main
mvertens Jan 9, 2026
2b7920a
Merge pull request #27 from mvertens/feature/new_datm_optional_streams
mvertens Jan 9, 2026
342a27c
Merge tag 'cdeps1.0.87_noresm_v1' into feature/new_mapfile_mapalgo
mvertens Jan 9, 2026
13b0398
merged to head of noresm
mvertens Jan 9, 2026
061a433
updated to noresm
mvertens Jan 9, 2026
652ba5b
updated stream_cdeps.py to noresm
mvertens Jan 9, 2026
37ab925
Merge pull request #17 from mvertens/feature/fix_multilev_cplhist
mvertens Jan 10, 2026
eacb1c8
fixed bug in dwav that was introduced as part of refactor
mvertens Jan 10, 2026
45229e0
Merge branch 'noresm' into feature/refactor_stream_usage
mvertens Jan 10, 2026
b69a93b
fixed syntax for (C[SLX]) to (len=C[SLX])
mvertens Jan 10, 2026
23c2c66
Merge remote-tracking branch 'mvertens/feature/refactor_stream_usage'…
mvertens Jan 10, 2026
8dc92ef
additional fixed syntax for (C[SLX]) to (len=C[SLX])
mvertens Jan 10, 2026
de4a200
addressed issue raised in PR review
mvertens Jan 10, 2026
bb3fe3c
Merge pull request #31 from mvertens/feature/new_mapfile_mapalgo
mvertens Jan 10, 2026
53b58da
Merge branch 'noresm' into feature/refactor_stream_usage
mvertens Jan 10, 2026
b992167
Merge branch 'feature/refactor_stream_usage' into feature/refactor_st…
mvertens Jan 10, 2026
7129952
refactored datm gefs mode
mvertens Jan 13, 2026
a24536b
Merge branch 'feature/refactor_stream_usage' into feature/refactor_st…
mvertens Jan 13, 2026
88562ab
fix problem encountered in ufs for docn cplhist mode
mvertens Jan 13, 2026
f002ecd
Merge remote-tracking branch 'mvertens/feature/refactor_stream_usage'…
mvertens Jan 13, 2026
b3c10ab
removed unused local variables
mvertens Jan 14, 2026
ee77d0d
addressed issues raised in PR review by Bill Sacks
mvertens Jan 16, 2026
95ab312
addressed more issues raised by Bill Sacks in the PR review
mvertens Jan 16, 2026
0456560
Merge branch 'feature/refactor_stream_usage' into feature/refactor_st…
mvertens Jan 16, 2026
19c1e3f
fixed compile problem
mvertens Jan 16, 2026
414ba6a
fixed problematic fix
mvertens Jan 16, 2026
1670e2b
fixed typo in correcting errors
mvertens Jan 16, 2026
084752b
Merge branch 'feature/refactor_stream_usage_escomp' into feature/refa…
mvertens Jan 16, 2026
7300824
fixed problem found in testing aux_cdeps
mvertens Jan 16, 2026
15030a7
Merge branch 'feature/refactor_stream_usage' into feature/refactor_st…
mvertens Jan 16, 2026
a3b28fa
Remove line breaks from valid values for DATM_PRESNDEP
billsacks Jan 17, 2026
5ac76ce
refactored dice cplhist mode
mvertens Jan 17, 2026
0539008
fix test failure for SMS_D_Ld1.ne30pg3_t232.I1850Clm50BgcSpinup.derec…
Jan 17, 2026
7b2e7c4
Merge branch 'feature/refactor_stream_usage_escomp' into feature/refa…
Jan 17, 2026
91ca9b8
removed extraneous debug statements
Jan 17, 2026
6f8e80d
Merge branch 'feature/refactor_stream_usage_escomp' into feature/refa…
Jan 17, 2026
c235eca
Fix error message
billsacks Jan 17, 2026
c65bba8
refactored dice cplhist mode
mvertens Jan 17, 2026
306bee1
fixed baseline differences in ocnImp_So_bldepth in ERI.TL319_t232.DTE…
Jan 17, 2026
c80bc48
Merge branch 'feature/refactor_stream_usage_escomp' into feature/refa…
mvertens Jan 18, 2026
8ce3ffe
added new drof_datamode_cplhist.F90 and expanded list of cplhist stre…
mvertens Jan 18, 2026
c466e2a
Merge branch 'feature/refactor_stream_usage' into feature/refactor_st…
mvertens Jan 18, 2026
419ca86
fixed problems in latest PR
mvertens Jan 19, 2026
03e9bb7
fixed another problem found in PR review
mvertens Jan 21, 2026
829a175
fixed problem mentioned in PR review
mvertens Jan 21, 2026
9d88ca5
Restore accidentally-deleted JRA-1p5-2023 DROF mode
billsacks Jan 23, 2026
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: 2 additions & 1 deletion cime_config/stream_cdeps.py
Original file line number Diff line number Diff line change
Expand Up @@ -344,7 +344,8 @@ def create_stream_xml(

# Check that key is valid
expect(
mod_dict[var_key] in valid_values[var_key],
(mod_dict[var_key] in valid_values[var_key]) or
(var_key == 'mapalgo' and 'mapfile:' in mod_dict[var_key]),
"{} can only have values of {} for stream {} in file {}".format(
var_key,
valid_values[var_key],
Expand Down
195 changes: 61 additions & 134 deletions datm/atm_comp_nuopc.F90

Large diffs are not rendered by default.

6 changes: 1 addition & 5 deletions datm/cime_config/config_component.xml
Original file line number Diff line number Diff line change
Expand Up @@ -102,11 +102,7 @@

<entry id="DATM_PRESNDEP">
<type>char</type>
<valid_values>none,
clim_1850_cmip7,clim_2000_cmip7,clim_2010_cmip7,hist_cmip7,
clim_1850_cmip6,clim_2000_cmip6,clim_2010_cmip6,hist_cmip6,
SSP1-2.6,SSP2-4.5,SSP3-7.0,SSP5-3.4,SSP5-8.5,cplhist
</valid_values>
<valid_values>none,clim_1850_cmip7,clim_2000_cmip7,clim_2010_cmip7,hist_cmip7,clim_1850_cmip6,clim_2000_cmip6,clim_2010_cmip6,hist_cmip6,SSP1-2.6,SSP2-4.5,SSP3-7.0,SSP5-3.4,SSP5-8.5,cplhist</valid_values>
<default_value>clim_2000</default_value>
<values match="last">
<value compset="^1850[CE]?_" >clim_1850_cmip6</value>
Expand Down
16 changes: 0 additions & 16 deletions datm/cime_config/namelist_definition_datm.xml
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,6 @@
<value datm_mode="CLM_QIAN$">
CLM_QIAN.Solar,CLM_QIAN.Precip,CLM_QIAN.TPQW
</value>
<value datm_mode="CLM_QIAN_WISO">
CLM_QIAN_WISO.Solar,CLM_QIAN_WISO.Precip,CLM_QIAN_WISO.TPQW
</value>
<value datm_mode="CLMCRUJRA2024">
CLMCRUJRA2024.Solar,CLMCRUJRA2024.Precip,CLMCRUJRA2024.TPQW
</value>
Expand Down Expand Up @@ -329,19 +326,6 @@
</values>
</entry>

<entry id="flds_wiso">
<type>logical</type>
<category>datm</category>
<group>datm_nml</group>
<desc>
If true, prescribed water isotopes are sent from datm (must be true for running with CLM).
</desc>
<values>
<value>.false.</value>
<!-- <value datm_mode="CLM_QIAN_WISO">.true.</value> -->
</values>
</entry>

<entry id="iradsw">
<type>integer</type>
<category>datm</category>
Expand Down
401 changes: 215 additions & 186 deletions datm/datm_datamode_clmncep_mod.F90

Large diffs are not rendered by default.

145 changes: 91 additions & 54 deletions datm/datm_datamode_core2_mod.F90
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ module datm_datamode_core2_mod
real(r8), pointer :: Sa_shum(:) => null()
real(r8), pointer :: Sa_pbot(:) => null()
real(r8), pointer :: Sa_pslv(:) => null()
real(r8), pointer :: Faxa_lwdn(:) => null()
real(r8), pointer :: Sa_dens(:) => null()
real(r8), pointer :: Faxa_rainc(:) => null()
real(r8), pointer :: Faxa_rainl(:) => null()
real(r8), pointer :: Faxa_snowc(:) => null()
Expand All @@ -55,13 +55,22 @@ module datm_datamode_core2_mod
real(r8), pointer :: Faxa_swvdr(:) => null()
real(r8), pointer :: Faxa_swvdf(:) => null()
real(r8), pointer :: Faxa_swnet(:) => null()
real(r8), pointer :: Faxa_swdn(:) => null()
real(r8), pointer :: Faxa_lwdn(:) => null()

! stream data
real(r8), pointer :: strm_prec(:) => null()
real(r8), pointer :: strm_swdn(:) => null()
real(r8), pointer :: strm_tarcf(:) => null()

! othe module arrays
! required stream data points
real(r8), pointer :: strm_Faxa_prec(:) => null()
real(r8), pointer :: strm_Faxa_swdn(:) => null()
real(r8), pointer :: strm_Faxa_lwdn(:) => null()
real(r8), pointer :: strm_Sa_pslv(:) => null()
real(r8), pointer :: strm_Sa_tbot(:) => null()
real(r8), pointer :: strm_Sa_shum(:) => null()
real(r8), pointer :: strm_Sa_dens(:) => null()
real(r8), pointer :: strm_Sa_u(:) => null()
real(r8), pointer :: strm_Sa_v(:) => null()
real(r8), pointer :: strm_tarcf(:) => null()

! other module arrays
real(R8), pointer :: windFactor(:)
real(R8), pointer :: winddFactor(:)
real(R8), pointer :: qsatFactor(:)
Expand Down Expand Up @@ -159,31 +168,6 @@ subroutine datm_datamode_core2_init_pointers(exportState, sdat, datamode, factor

rc = ESMF_SUCCESS

lsize = sdat%model_lsize

! allocate module arrays
allocate(windFactor(lsize))
allocate(winddFactor(lsize))
allocate(qsatFactor(lsize))

call ESMF_MeshGet(sdat%model_mesh, spatialDim=spatialDim, numOwnedElements=numOwnedElements, rc=rc)
if (ChkErr(rc,__LINE__,u_FILE_u)) return
allocate(ownedElemCoords(spatialDim*numOwnedElements))
allocate(yc(numOwnedElements))
call ESMF_MeshGet(sdat%model_mesh, ownedElemCoords=ownedElemCoords)
if (ChkErr(rc,__LINE__,u_FILE_u)) return
do n = 1,numOwnedElements
yc(n) = ownedElemCoords(2*n)
end do

! get stream pointers
call shr_strdata_get_stream_pointer( sdat, 'Faxa_prec' , strm_prec , rc)
if (ChkErr(rc,__LINE__,u_FILE_u)) return
call shr_strdata_get_stream_pointer( sdat, 'Faxa_swdn' , strm_swdn , rc)
if (ChkErr(rc,__LINE__,u_FILE_u)) return
call shr_strdata_get_stream_pointer( sdat, 'tarcf' , strm_tarcf , rc)
if (ChkErr(rc,__LINE__,u_FILE_u)) return

! get export state pointers
call dshr_state_getfldptr(exportState, 'Sa_z' , fldptr1=Sa_z , rc=rc)
if (ChkErr(rc,__LINE__,u_FILE_u)) return
Expand All @@ -205,6 +189,8 @@ subroutine datm_datamode_core2_init_pointers(exportState, sdat, datamode, factor
if (ChkErr(rc,__LINE__,u_FILE_u)) return
call dshr_state_getfldptr(exportState, 'Sa_shum' , fldptr1=Sa_shum , rc=rc)
if (ChkErr(rc,__LINE__,u_FILE_u)) return
call dshr_state_getfldptr(exportState, 'Sa_dens' , fldptr1=Sa_dens , rc=rc)
if (ChkErr(rc,__LINE__,u_FILE_u)) return
call dshr_state_getfldptr(exportState, 'Faxa_rainc' , fldptr1=Faxa_rainc , rc=rc)
if (ChkErr(rc,__LINE__,u_FILE_u)) return
call dshr_state_getfldptr(exportState, 'Faxa_rainl' , fldptr1=Faxa_rainl , rc=rc)
Expand All @@ -223,22 +209,63 @@ subroutine datm_datamode_core2_init_pointers(exportState, sdat, datamode, factor
if (ChkErr(rc,__LINE__,u_FILE_u)) return
call dshr_state_getfldptr(exportState, 'Faxa_swnet' , fldptr1=Faxa_swnet , rc=rc)
if (ChkErr(rc,__LINE__,u_FILE_u)) return
call dshr_state_getfldptr(exportState, 'Faxa_swdn' , fldptr1=Faxa_swdn , rc=rc)
if (ChkErr(rc,__LINE__,u_FILE_u)) return
call dshr_state_getfldptr(exportState, 'Faxa_lwdn' , fldptr1=Faxa_lwdn , rc=rc)
if (ChkErr(rc,__LINE__,u_FILE_u)) return

if (.not. associated(strm_prec) .or. .not. associated(strm_swdn)) then
call shr_log_error(subname//'ERROR: prec and swdn must be in streams for CORE2', rc=rc)
! get required 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 core2 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 core2 datamode', rc=rc)
if (ChkErr(rc,__LINE__,u_FILE_u)) return
call shr_strdata_get_stream_pointer( sdat, 'Faxa_lwdn' , strm_Faxa_lwdn , requirePointer=.true., &
errmsg=subname//'ERROR: strm_Faxa_lwdn must be associated for core2 datamode', rc=rc)
if (ChkErr(rc,__LINE__,u_FILE_u)) return
call shr_strdata_get_stream_pointer( sdat, 'Sa_pslv' , strm_Sa_pslv , requirePointer=.true., &
errmsg=subname//'ERROR: strm_Sa_pslv must be associated for core2 datamode', rc=rc)
if (ChkErr(rc,__LINE__,u_FILE_u)) return
call shr_strdata_get_stream_pointer( sdat, 'Sa_tbot' , strm_Sa_tbot , requirePointer=.true., &
errmsg=subname//'ERROR: strm_Sa_tbot must be associated for core2 datamode', rc=rc)
if (ChkErr(rc,__LINE__,u_FILE_u)) return
call shr_strdata_get_stream_pointer( sdat, 'Sa_u' , strm_Sa_u , requirePointer=.true., &
errmsg=subname//'ERROR: strm_Sa_u must be associated for core2 datamode', rc=rc)
if (ChkErr(rc,__LINE__,u_FILE_u)) return
call shr_strdata_get_stream_pointer( sdat, 'Sa_v' , strm_Sa_v , requirePointer=.true., &
errmsg=subname//'ERROR: strm_Sa_v must be associated for core2 datamode', rc=rc)
if (ChkErr(rc,__LINE__,u_FILE_u)) return
call shr_strdata_get_stream_pointer( sdat, 'Sa_shum' , strm_Sa_shum , requirePointer=.true., &
errmsg=subname//'ERROR: strm_Sa_shum must be associated for core2 datamode', rc=rc)
if (ChkErr(rc,__LINE__,u_FILE_u)) return
call shr_strdata_get_stream_pointer( sdat, 'Sa_dens' , strm_Sa_dens , requirePointer=.true., &
errmsg=subname//'ERROR: strm_Sa_dens must be associated for core2 datamode', rc=rc)
if (ChkErr(rc,__LINE__,u_FILE_u)) return
call shr_strdata_get_stream_pointer( sdat, 'tarcf', strm_tarcf, rc) ! required for CORE2_IAF
if (ChkErr(rc,__LINE__,u_FILE_u)) return
if (trim(datamode) == 'CORE2_IAF' .and. .not. associated(strm_tarcf)) then
call shr_log_error(subname//'tarcf must be associated for CORE2_IAF', rc=rc)
return
endif

if (trim(datamode) == 'CORE2_IAF' ) then
if (.not. associated(strm_tarcf)) then
call shr_log_error(subname//'tarcf must be in an input stream for CORE2_IAF', rc=rc)
return
endif
endif
! create yc
call ESMF_MeshGet(sdat%model_mesh, spatialDim=spatialDim, numOwnedElements=numOwnedElements, rc=rc)
if (ChkErr(rc,__LINE__,u_FILE_u)) return
allocate(ownedElemCoords(spatialDim*numOwnedElements))
allocate(yc(numOwnedElements))
call ESMF_MeshGet(sdat%model_mesh, ownedElemCoords=ownedElemCoords)
if (ChkErr(rc,__LINE__,u_FILE_u)) return
do n = 1,numOwnedElements
yc(n) = ownedElemCoords(2*n)
end do
deallocate(ownedElemCoords)

! create adjustment factor arrays
lsize = sdat%model_lsize
allocate(windFactor(lsize))
allocate(winddFactor(lsize))
allocate(qsatFactor(lsize))
call datm_get_adjustment_factors(sdat, factorFn_mesh, factorFn_data, windFactor, winddFactor, qsatFactor, rc)
if (ChkErr(rc,__LINE__,u_FILE_u)) return

Expand Down Expand Up @@ -278,11 +305,13 @@ subroutine datm_datamode_core2_advance(datamode, target_ymd, target_tod, target_
cosfactor = cos((2.0_R8*SHR_CONST_PI*rday)/365 - phs_c0)

do n = 1,lsize

!--- set Sa_z to a constant ---
Sa_z(n) = 10.0_R8

!--- correction to NCEP winds based on QSCAT ---
uprime = Sa_u(n)*windFactor(n)
vprime = Sa_v(n)*windFactor(n)
uprime = strm_Sa_u(n)*windFactor(n)
vprime = strm_Sa_v(n)*windFactor(n)
Sa_u(n) = uprime*cos(winddFactor(n)*degtorad) - vprime*sin(winddFactor(n)*degtorad)
Sa_v(n) = uprime*sin(winddFactor(n)*degtorad) + vprime*cos(winddFactor(n)*degtorad)

Expand All @@ -291,9 +320,12 @@ subroutine datm_datamode_core2_advance(datamode, target_ymd, target_tod, target_
Sa_v10m(n) = Sa_v(n)

!--- density and pslv taken directly from input stream, set pbot ---
Sa_pslv(n) = strm_Sa_pslv(n)
Sa_dens(n) = strm_Sa_dens(n)
Sa_pbot(n) = Sa_pslv(n)

!--- correction to NCEP Arctic & Antarctic air T & potential T ---
Sa_tbot(n) = strm_Sa_tbot(n)
if ( yc(n) < -60.0_R8 ) then
tMin = (avg_c0 + avg_c1*yc(n)) + (amp_c0 + amp_c1*yc(n))*cosFactor + tKFrz
Sa_tbot(n) = max(Sa_tbot(n), tMin)
Expand All @@ -304,7 +336,7 @@ subroutine datm_datamode_core2_advance(datamode, target_ymd, target_tod, target_
Sa_ptem(n) = Sa_tbot(n)

!--- correction to NCEP relative humidity for heat budget balance ---
Sa_shum(n) = Sa_shum(n) + qsatFactor(n)
Sa_shum(n) = strm_Sa_shum(n) + qsatFactor(n)

!--- Dupont correction to NCEP Arctic air T ---
!--- don't correct during summer months (July-September)
Expand All @@ -315,34 +347,37 @@ subroutine datm_datamode_core2_advance(datamode, target_ymd, target_tod, target_
end if

! PRECIPITATION DATA
strm_prec(n) = strm_prec(n)/86400.0_R8 ! convert mm/day to kg/m^2/s
strm_Faxa_prec(n) = strm_Faxa_prec(n)/86400.0_R8 ! convert mm/day to kg/m^2/s
! only correct satellite products, do not correct Serreze Arctic data
if ( yc(n) < 58. ) then
strm_prec(n) = strm_prec(n)*1.14168_R8
strm_Faxa_prec(n) = strm_Faxa_prec(n)*1.14168_R8
endif
if ( yc(n) >= 58. .and. yc(n) < 68. ) then
factor = MAX(0.0_R8, 1.0_R8 - 0.1_R8*(yc(n)-58.0_R8) )
strm_prec(n) = strm_prec(n)*(factor*(1.14168_R8 - 1.0_R8) + 1.0_R8)
strm_Faxa_prec(n) = strm_Faxa_prec(n)*(factor*(1.14168_R8 - 1.0_R8) + 1.0_R8)
endif
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_prec(n)
Faxa_snowl(n) = strm_Faxa_prec(n)
else
Faxa_rainl(n) = strm_prec(n)
Faxa_rainl(n) = strm_Faxa_prec(n)
Faxa_snowl(n) = 0.0_R8
endif

! RADIATION DATA
!--- fabricate required swdn components from net swdn ---
Faxa_swvdr(n) = strm_swdn(n)*(0.28_R8)
Faxa_swndr(n) = strm_swdn(n)*(0.31_R8)
Faxa_swvdf(n) = strm_swdn(n)*(0.24_R8)
Faxa_swndf(n) = strm_swdn(n)*(0.17_R8)
Faxa_swdn(n) = strm_Faxa_swdn(n)
Faxa_swvdr(n) = strm_Faxa_swdn(n)*(0.28_R8)
Faxa_swndr(n) = strm_Faxa_swdn(n)*(0.31_R8)
Faxa_swvdf(n) = strm_Faxa_swdn(n)*(0.24_R8)
Faxa_swndf(n) = strm_Faxa_swdn(n)*(0.17_R8)

!--- compute net short-wave based on LY08 latitudinally-varying albedo ---
avg_alb = ( 0.069 - 0.011*cos(2.0_R8*yc(n)*degtorad ) )
Faxa_swnet(n) = strm_swdn(n)*(1.0_R8 - avg_alb)
Faxa_swnet(n) = strm_Faxa_swdn(n)*(1.0_R8 - avg_alb)

!--- corrections to GISS sswdn for heat budget balancing ---
factor = 1.0_R8
if ( -60.0_R8 < yc(n) .and. yc(n) < -50.0_R8 ) then
Expand All @@ -357,10 +392,12 @@ subroutine datm_datamode_core2_advance(datamode, target_ymd, target_tod, target_
Faxa_swndr(n) = Faxa_swndr(n)*factor
Faxa_swvdf(n) = Faxa_swvdf(n)*factor
Faxa_swndf(n) = Faxa_swndf(n)*factor

!--- correction to GISS lwdn in Arctic ---
Faxa_lwdn(n) = strm_Faxa_lwdn(n)
if ( yc(n) > 60._R8 ) then
factor = MIN(1.0_R8, 0.1_R8*(yc(n)-60.0_R8) )
Faxa_lwdn(n) = Faxa_lwdn(n) + factor * dLWarc
Faxa_lwdn(n) = strm_Faxa_lwdn(n) + factor * dLWarc
endif

enddo ! lsize
Expand Down
Loading