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

Update CICE for E3SM Icepack modifications #879

Merged
merged 35 commits into from
Oct 5, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
35 commits
Select commit Hold shift + click to select a range
3ca3a81
Update CICE to run with eclare108213/Icepack branch snicar (#100)
apcraig Sep 30, 2022
2b6c6c4
Add E3SM namelists for CICE. (#101)
dabail10 Oct 6, 2022
14c8157
Merge branch 'main' of https://github.com/cice-consortium/cice into E…
apcraig Oct 9, 2022
9689489
Merge pull request #102 from apcraig/upd01
apcraig Oct 10, 2022
62b4720
add Tliquidus_max namelist parameter to CICE
eclare108213 Oct 24, 2022
59bffba
Merge pull request #104 from eclare108213/Tliquidus_max
apcraig Oct 25, 2022
920c34a
Add Tf argument to icepack interfaces
dabail10 Oct 24, 2022
47e5b00
Add constant option for tfrz_option
dabail10 Oct 24, 2022
70fc307
Fix some diagnostic prints and add to additional drivers
dabail10 Oct 24, 2022
40d4874
Update messages and change option in alt01
dabail10 Oct 24, 2022
95ad3cb
Update implementation for latest version of Icepack
apcraig Oct 25, 2022
218c051
Update Icepack
apcraig Oct 25, 2022
8ac3804
Merge pull request #103 from apcraig/tfrz
apcraig Oct 27, 2022
d14a3a7
Merge branch 'main' of https://github.com/cice-consortium/cice into e…
apcraig Nov 21, 2022
ec8632f
Merge pull request #105 from apcraig/e3smup1
apcraig Nov 21, 2022
8df2d7b
Merge branch 'main' of https://github.com/apcraig/cice into e3sm_upd641
apcraig Dec 15, 2022
b28511b
Update to E3SM-Project/Icepack/cice-consortium/E3SM-icepack-initial-i…
apcraig Dec 15, 2022
a324099
Merge pull request #106 from apcraig/e3sm_upd641
apcraig Dec 16, 2022
6263881
Merge branch 'main' of https://github.com/cice-consortium/cice into c…
apcraig Feb 3, 2023
25d1456
Update Icepack to E3SM-Project/Icepack #87db73ba6d93747a9, current he…
apcraig Feb 3, 2023
0f0e0b1
Merge pull request #107 from apcraig/cice230202
apcraig Feb 3, 2023
b69d7e4
Merge commit '7df80ba' into icep230317
apcraig Mar 24, 2023
9990713
Merge pull request #108 from apcraig/icep230317
apcraig Mar 25, 2023
407a5c3
Merge branch 'main' of https://github.com/cice-consortium/cice into i…
apcraig May 26, 2023
a093b13
Merge pull request #109 from apcraig/icep230524
apcraig May 26, 2023
95a797c
Merge branch 'main' of https://github.com/cice-consortium/cice into E…
apcraig Aug 21, 2023
5f84e7a
Merge pull request #110 from apcraig/e3smup2
apcraig Aug 22, 2023
fd44996
Merge branch 'main' of https://github.com/cice-consortium/cice into e…
apcraig Sep 28, 2023
0ab1ad0
Merge pull request #111 from apcraig/e3smup3
apcraig Sep 28, 2023
7603016
Merge branch 'main' of https://github.com/cice-consortium/cice into u…
apcraig Oct 4, 2023
cc880b4
Update boxchan1e and boxchan1n tests to tfrz_option = 'mushy_old' to …
apcraig Oct 4, 2023
b046d22
Merge pull request #112 from apcraig/upd231004
apcraig Oct 4, 2023
0893c5b
remove icepack
apcraig Oct 4, 2023
fd0549e
update icepack
apcraig Oct 4, 2023
b3f4d66
Merge pull request #113 from apcraig/icepfin
apcraig Oct 4, 2023
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
2 changes: 1 addition & 1 deletion .gitmodules
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
[submodule "icepack"]
path = icepack
url = https://github.com/cice-consortium/Icepack
url = https://github.com/cice-consortium/icepack
2 changes: 1 addition & 1 deletion cice.setup
Original file line number Diff line number Diff line change
Expand Up @@ -1189,7 +1189,7 @@ source ./cice.settings
set bldstat = 0
if (\${dobuild} == true) then
if (\${doreuse} == true) then
set ciceexe = "../ciceexe.\${ICE_TARGET}.\${ICE_ENVNAME}.\${ICE_COMMDIR}.\${ICE_BLDDEBUG}.\${ICE_THREADED}.\${ICE_IOTYPE}"
set ciceexe = "../ciceexe.\${ICE_TARGET}.\${ICE_ENVNAME}.\${ICE_COMMDIR}.\${ICE_BLDDEBUG}.\${ICE_THREADED}.\${ICE_IOTYPE}.\${ICE_SNICARHC}"
./cice.build --exe \${ciceexe}
set bldstat = \${status}
if !(-e \${ciceexe}) cp -p \${ICE_RUNDIR}/cice \${ciceexe}
Expand Down
9 changes: 6 additions & 3 deletions cicecore/cicedyn/dynamics/ice_transport_driver.F90
Original file line number Diff line number Diff line change
Expand Up @@ -713,6 +713,7 @@ subroutine transport_upwind (dt)
use ice_state, only: aice0, aicen, vicen, vsnon, trcrn, &
uvel, vvel, trcr_depend, bound_state, trcr_base, &
n_trcr_strata, nt_strata, uvelE, vvelN
use ice_flux, only: Tf
use ice_grid, only: HTE, HTN, tarea, tmask, grid_ice
use ice_timers, only: ice_timer_start, ice_timer_stop, &
timer_bound, timer_advect
Expand Down Expand Up @@ -838,7 +839,7 @@ subroutine transport_upwind (dt)
ntrcr, narr, &
trcr_depend(:), trcr_base(:,:), &
n_trcr_strata(:), nt_strata(:,:), &
tmask(:,:, iblk), &
tmask(:,:, iblk), Tf (:,:,iblk), &
aicen(:,:, :,iblk), trcrn (:,:,:,:,iblk), &
vicen(:,:, :,iblk), vsnon (:,:, :,iblk), &
aice0(:,:, iblk), works (:,:, :,iblk))
Expand Down Expand Up @@ -1643,7 +1644,7 @@ subroutine work_to_state (nx_block, ny_block, &
trcr_base, &
n_trcr_strata, &
nt_strata, &
tmask, &
tmask, Tf, &
aicen, trcrn, &
vicen, vsnon, &
aice0, works)
Expand All @@ -1670,6 +1671,7 @@ subroutine work_to_state (nx_block, ny_block, &
tmask (nx_block,ny_block)

real (kind=dbl_kind), intent (in) :: &
Tf (nx_block,ny_block), &
works (nx_block,ny_block,narr)

real (kind=dbl_kind), dimension (nx_block,ny_block,ncat), intent(out) :: &
Expand Down Expand Up @@ -1746,7 +1748,8 @@ subroutine work_to_state (nx_block, ny_block, &
trcr_base = trcr_base(:,:), &
n_trcr_strata = n_trcr_strata(:), &
nt_strata = nt_strata(:,:), &
trcrn = trcrn(i,j,:,n))
trcrn = trcrn(i,j,:,n), &
Tf = Tf(i,j))

! tcraig, don't let land points get non-zero Tsfc
if (.not.tmask(i,j)) then
Expand Down
215 changes: 3 additions & 212 deletions cicecore/cicedyn/general/ice_forcing_bgc.F90
Original file line number Diff line number Diff line change
Expand Up @@ -17,13 +17,13 @@ module ice_forcing_bgc
use ice_calendar, only: dt, istep, msec, mday, mmonth
use ice_fileunits, only: nu_diag
use ice_arrays_column, only: restore_bgc, &
bgc_data_dir, fe_data_type, optics_file, optics_file_fieldname
bgc_data_dir, fe_data_type
use ice_constants, only: c0, p1
use ice_constants, only: field_loc_center, field_type_scalar
use ice_exit, only: abort_ice
use ice_forcing, only: bgc_data_type
use icepack_intfc, only: icepack_warnings_flush, icepack_warnings_aborted
use icepack_intfc, only: icepack_nspint, icepack_max_aero, &
use icepack_intfc, only: icepack_nspint_3bd, icepack_max_aero, &
icepack_max_algae, icepack_max_doc, icepack_max_dic
use icepack_intfc, only: icepack_query_tracer_flags, &
icepack_query_parameters, icepack_query_parameters, &
Expand All @@ -32,8 +32,7 @@ module ice_forcing_bgc
implicit none
private
public :: get_forcing_bgc, get_atm_bgc, fzaero_data, alloc_forcing_bgc, &
init_bgc_data, faero_data, faero_default, faero_optics, &
fiso_default
init_bgc_data, faero_data, faero_default, fiso_default

integer (kind=int_kind) :: &
bgcrecnum = 0 ! old record number (save between steps)
Expand Down Expand Up @@ -840,214 +839,6 @@ subroutine init_bgc_data (fed1,fep1)

end subroutine init_bgc_data

!=======================================================================
!
! Aerosol optical properties for bulk and modal aerosol formulation
! X_bc_tab properties are from snicar_optics_5bnd_mam_c140303 (Mark Flanner 2009)
! ==> "Mie optical parameters for CLM snowpack treatment" Includes
! ice (effective radii from 30-1500um), black carbon, organic carbon and dust
!
! authors: Elizabeth Hunke, LANL

subroutine faero_optics

use ice_broadcast, only: broadcast_array
use ice_read_write, only: ice_open_nc, ice_close_nc
use ice_communicate, only: my_task, master_task
use ice_arrays_column, only: &
kaer_tab, & ! aerosol mass extinction cross section (m2/kg)
waer_tab, & ! aerosol single scatter albedo (fraction)
gaer_tab, & ! aerosol asymmetry parameter (cos(theta))
kaer_bc_tab, & ! BC mass extinction cross section (m2/kg)
waer_bc_tab, & ! BC single scatter albedo (fraction)
gaer_bc_tab, & ! BC aerosol asymmetry parameter (cos(theta))
bcenh ! BC absorption enhancement factor

#ifdef USE_NETCDF
use netcdf
#endif

! local parameters

logical (kind=log_kind) :: modal_aero

integer (kind=int_kind) :: &
varid , & ! variable id
status , & ! status output from netcdf routines
n, k ! index

real (kind=dbl_kind) :: &
amin, amax, asum ! min, max values and sum of input array

integer (kind=int_kind) :: &
fid ! file id for netCDF file

character (char_len_long) :: &
fieldname ! field name in netcdf file

character(len=*), parameter :: subname = '(faero_optics)'

! this data is used in bulk aerosol treatment in dEdd radiation
kaer_tab = reshape((/ & ! aerosol mass extinction cross section (m2/kg)
! 11580.61872, 5535.41835, 2793.79690, &
! 25798.96479, 11536.03871, 4688.24207, &
! 196.49772, 204.14078, 214.42287, &
! 2665.85867, 2256.71027, 820.36024, &
! 840.78295, 1028.24656, 1163.03298, &
! 387.51211, 414.68808, 450.29814/), &
11580.61872_dbl_kind, 5535.41835_dbl_kind, 2793.79690_dbl_kind, &
25798.96479_dbl_kind, 11536.03871_dbl_kind, 4688.24207_dbl_kind, &
196.49772_dbl_kind, 204.14078_dbl_kind, 214.42287_dbl_kind, &
2665.85867_dbl_kind, 2256.71027_dbl_kind, 820.36024_dbl_kind, &
840.78295_dbl_kind, 1028.24656_dbl_kind, 1163.03298_dbl_kind, &
387.51211_dbl_kind, 414.68808_dbl_kind, 450.29814_dbl_kind/), &
(/icepack_nspint,icepack_max_aero/))
waer_tab = reshape((/ & ! aerosol single scatter albedo (fraction)
! 0.29003, 0.17349, 0.06613, &
! 0.51731, 0.41609, 0.21324, &
! 0.84467, 0.94216, 0.95666, &
! 0.97764, 0.99402, 0.98552, &
! 0.94146, 0.98527, 0.99093, &
! 0.90034, 0.96543, 0.97678/), &
0.29003_dbl_kind, 0.17349_dbl_kind, 0.06613_dbl_kind, &
0.51731_dbl_kind, 0.41609_dbl_kind, 0.21324_dbl_kind, &
0.84467_dbl_kind, 0.94216_dbl_kind, 0.95666_dbl_kind, &
0.97764_dbl_kind, 0.99402_dbl_kind, 0.98552_dbl_kind, &
0.94146_dbl_kind, 0.98527_dbl_kind, 0.99093_dbl_kind, &
0.90034_dbl_kind, 0.96543_dbl_kind, 0.97678_dbl_kind/), &
(/icepack_nspint,icepack_max_aero/))
gaer_tab = reshape((/ & ! aerosol asymmetry parameter (cos(theta))
! 0.35445, 0.19838, 0.08857, &
! 0.52581, 0.32384, 0.14970, &
! 0.83162, 0.78306, 0.74375, &
! 0.68861, 0.70836, 0.54171, &
! 0.70239, 0.66115, 0.71983, &
! 0.78734, 0.73580, 0.64411/), &
0.35445_dbl_kind, 0.19838_dbl_kind, 0.08857_dbl_kind, &
0.52581_dbl_kind, 0.32384_dbl_kind, 0.14970_dbl_kind, &
0.83162_dbl_kind, 0.78306_dbl_kind, 0.74375_dbl_kind, &
0.68861_dbl_kind, 0.70836_dbl_kind, 0.54171_dbl_kind, &
0.70239_dbl_kind, 0.66115_dbl_kind, 0.71983_dbl_kind, &
0.78734_dbl_kind, 0.73580_dbl_kind, 0.64411_dbl_kind/), &
(/icepack_nspint,icepack_max_aero/))

! this data is used in MODAL AEROSOL treatment in dEdd radiation
kaer_bc_tab = reshape((/ & ! aerosol mass extinction cross section (m2/kg)
! 12955.44732, 5946.89461, 2772.33366, &
! 12085.30664, 7438.83131, 3657.13084, &
! 9753.99698, 7342.87139, 4187.79304, &
! 7815.74879, 6659.65096, 4337.98863, &
! 6381.28194, 5876.78408, 4254.65054, &
! 5326.93163, 5156.74532, 4053.66581, &
! 4538.09763, 4538.60875, 3804.10884, &
! 3934.17604, 4020.20799, 3543.27199, &
! 3461.20656, 3587.80962, 3289.98060, &
! 3083.03396, 3226.27231, 3052.91441/), &
12955.4473151973_dbl_kind, 5946.89461205564_dbl_kind, 2772.33366387720_dbl_kind, &
12085.3066388712_dbl_kind, 7438.83131367992_dbl_kind, 3657.13084442081_dbl_kind, &
9753.99697536893_dbl_kind, 7342.87139082553_dbl_kind, 4187.79303607928_dbl_kind, &
7815.74879345131_dbl_kind, 6659.65096365965_dbl_kind, 4337.98863414228_dbl_kind, &
6381.28194381772_dbl_kind, 5876.78408231865_dbl_kind, 4254.65053724305_dbl_kind, &
5326.93163497508_dbl_kind, 5156.74531505734_dbl_kind, 4053.66581550147_dbl_kind, &
4538.09762614960_dbl_kind, 4538.60874501597_dbl_kind, 3804.10884202567_dbl_kind, &
3934.17604000777_dbl_kind, 4020.20798667897_dbl_kind, 3543.27199302277_dbl_kind, &
3461.20655708248_dbl_kind, 3587.80961820605_dbl_kind, 3289.98060303894_dbl_kind, &
3083.03396032095_dbl_kind, 3226.27231329114_dbl_kind, 3052.91440681137_dbl_kind/), &
(/icepack_nspint,10/))

waer_bc_tab = reshape((/ & ! aerosol single scatter albedo (fraction)
! 0.26107, 0.15861, 0.06535, &
! 0.37559, 0.30318, 0.19483, &
! 0.42224, 0.36913, 0.27875, &
! 0.44777, 0.40503, 0.33026, &
! 0.46444, 0.42744, 0.36426, &
! 0.47667, 0.44285, 0.38827, &
! 0.48635, 0.45428, 0.40617, &
! 0.49440, 0.46328, 0.42008, &
! 0.50131, 0.47070, 0.43128, &
! 0.50736, 0.47704, 0.44056/), &
0.261071919959011_dbl_kind, 0.158608047940651_dbl_kind, 0.0653546447770291_dbl_kind, &
0.375593873543050_dbl_kind, 0.303181671502553_dbl_kind, 0.194832290545495_dbl_kind, &
0.422240383488477_dbl_kind, 0.369134186611324_dbl_kind, 0.278752556671685_dbl_kind, &
0.447772153910671_dbl_kind, 0.405033725319593_dbl_kind, 0.330260831965086_dbl_kind, &
0.464443094570456_dbl_kind, 0.427439117980081_dbl_kind, 0.364256689383418_dbl_kind, &
0.476668995985241_dbl_kind, 0.442854173154887_dbl_kind, 0.388270470928338_dbl_kind, &
0.486347881475941_dbl_kind, 0.454284736567521_dbl_kind, 0.406167596922937_dbl_kind, &
0.494397834153785_dbl_kind, 0.463279526357470_dbl_kind, 0.420084410794128_dbl_kind, &
0.501307856563459_dbl_kind, 0.470696914968199_dbl_kind, 0.431284889617716_dbl_kind, &
0.507362336297419_dbl_kind, 0.477038272961243_dbl_kind, 0.440559363958571_dbl_kind/), &
(/icepack_nspint,10/))

gaer_bc_tab = reshape((/ & ! aerosol asymmetry parameter (cos(theta))
! 0.28328, 0.19644, 0.10498, &
! 0.44488, 0.32615, 0.19612, &
! 0.54724, 0.41611, 0.26390, &
! 0.61711, 0.48475, 0.31922, &
! 0.66673, 0.53923, 0.36632, &
! 0.70296, 0.58337, 0.40732, &
! 0.73002, 0.61960, 0.44344, &
! 0.75064, 0.64959, 0.47551, &
! 0.76663, 0.67461, 0.50415, &
! 0.77926, 0.69561, 0.52981/),&
0.283282988564031_dbl_kind, 0.196444209821980_dbl_kind, 0.104976473902976_dbl_kind, &
0.444877326083453_dbl_kind, 0.326147707342261_dbl_kind, 0.196121968923488_dbl_kind, &
0.547243414035631_dbl_kind, 0.416106187964493_dbl_kind, 0.263903486903711_dbl_kind, &
0.617111563012282_dbl_kind, 0.484745531707601_dbl_kind, 0.319218974395050_dbl_kind, &
0.666728525631754_dbl_kind, 0.539228555802301_dbl_kind, 0.366323180358996_dbl_kind, &
0.702956870835387_dbl_kind, 0.583372441336763_dbl_kind, 0.407316408184865_dbl_kind, &
0.730016668453191_dbl_kind, 0.619595539349710_dbl_kind, 0.443436944107423_dbl_kind, &
0.750635997128011_dbl_kind, 0.649589805870541_dbl_kind, 0.475512089138887_dbl_kind, &
0.766634959089444_dbl_kind, 0.674609076223658_dbl_kind, 0.504145461809103_dbl_kind, &
0.779256641759228_dbl_kind, 0.695614224933709_dbl_kind, 0.529805346632687_dbl_kind/), &
(/icepack_nspint,10/))

bcenh(:,:,:) = c0

call icepack_query_parameters(modal_aero_out=modal_aero)
call icepack_warnings_flush(nu_diag)
if (icepack_warnings_aborted()) call abort_ice(error_message=subname, &
file=__FILE__, line=__LINE__)

if (modal_aero) then
#ifdef USE_NETCDF
if (my_task == master_task) then
write (nu_diag,*) ' '
write (nu_diag,*) 'Read optics for modal aerosol treament in'
write (nu_diag,*) trim(optics_file)
write (nu_diag,*) 'Read optics file field name = ',trim(optics_file_fieldname)
call ice_open_nc(optics_file,fid)

fieldname=optics_file_fieldname

status = nf90_inq_varid(fid, trim(fieldname), varid)

if (status /= nf90_noerr) then
call abort_ice (subname//'ERROR: Cannot find variable '//trim(fieldname))
endif
status = nf90_get_var( fid, varid, bcenh, &
start=(/1,1,1,1/), &
count=(/3,10,8,1/) )
do n=1,10
amin = minval(bcenh(:,n,:))
amax = maxval(bcenh(:,n,:))
asum = sum (bcenh(:,n,:))
write(nu_diag,*) ' min, max, sum =', amin, amax, asum
enddo
call ice_close_nc(fid)
endif !master_task
do n=1,3
do k=1,8
call broadcast_array(bcenh(n,:,k), master_task)
enddo
enddo
#else
call abort_ice(subname//'ERROR: USE_NETCDF cpp not defined', &
file=__FILE__, line=__LINE__)
#endif
endif ! modal_aero

end subroutine faero_optics

!=======================================================================

end module ice_forcing_bgc
Expand Down
Loading
Loading