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

Remove Tracer CPPs, improve scripts test performance, and update documentation #196

Merged
merged 10 commits into from Oct 10, 2018
Merged
Show file tree
Hide file tree
Changes from 7 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
17 changes: 10 additions & 7 deletions cice.setup
Expand Up @@ -527,7 +527,7 @@ foreach compiler ( $ncompilers )
end

cd ${casedir}
source ./env.${machcomp} || exit 2
source ./env.${machcomp} -nomodules || exit 2

set quietmode = false
if ($?ICE_MACHINE_QUIETMODE) then
Expand Down Expand Up @@ -759,15 +759,12 @@ EOF2
${casescr}/parse_settings.sh cice.settings ${fsmods}
${casescr}/parse_namelist.sh ice_in ${fimods}
source ./cice.settings
source ./env.${machcomp} || exit 2
source ./env.${machcomp} -nomodules || exit 2
${casescr}/parse_namelist_from_env.sh ice_in

#------------------------------------------------------------
# Generate run script

source ./cice.settings
source ./env.${machcomp} || exit 2

${casescr}/cice.run.setup.csh
if ($status != 0) then
echo "${0}: ERROR, cice.run.setup.csh aborted"
Expand Down Expand Up @@ -805,10 +802,16 @@ cat $testname_base/test_output >> results.log
EOF

cat >> ./${tsdir}/suite.run << EOF
cd $testname_base
./cice.build
echo "-------test--------------"
echo "${testname_base}"
cd ${testname_base}
source ./cice.settings
set ciceexe = "../ciceexe.\${ICE_COMPILER}.\${ICE_COMMDIR}.\${ICE_BLDDEBUG}.\${ICE_THREADED}.\${ICE_IOTYPE}"
./cice.build \${ciceexe}
if !(-e \${ciceexe}) cp -p \${ICE_RUNDIR}/cice \${ciceexe}
./cice.submit
cd ..

EOF

# Reset case for the next test in suite
Expand Down
12 changes: 11 additions & 1 deletion cicecore/cicedynB/analysis/ice_history.F90
Expand Up @@ -65,7 +65,7 @@ subroutine init_hist (dt)
use ice_communicate, only: my_task, master_task
use ice_calendar, only: yday, days_per_year, histfreq, &
histfreq_n, nstreams
use ice_domain_size, only: max_blocks, max_nstrm
use ice_domain_size, only: max_blocks, max_nstrm, nilyr, nslyr, nblyr, ncat
use ice_dyn_shared, only: kdyn
use ice_flux, only: mlt_onset, frz_onset, albcnt
use ice_history_shared ! everything
Expand All @@ -91,6 +91,16 @@ subroutine init_hist (dt)
integer (kind=int_kind) :: nml_error ! namelist i/o error flag
character(len=*), parameter :: subname = '(init_hist)'

!-----------------------------------------------------------------
! set history dimensions
!-----------------------------------------------------------------

ncat_hist = ncat ! number of ice categories written <= ncat
nzilyr = nilyr ! vertical dimension (allows alternative grids)
nzslyr = nslyr ! snow
nzblyr = nblyr+2 ! bio grid
nzalyr = nblyr+4 ! aerosols (2 snow & nblyr+2 bio)

!-----------------------------------------------------------------
! read namelist
!-----------------------------------------------------------------
Expand Down
18 changes: 10 additions & 8 deletions cicecore/cicedynB/analysis/ice_history_shared.F90
Expand Up @@ -24,7 +24,7 @@
module ice_history_shared

use ice_kinds_mod
use ice_domain_size, only: ncat, nilyr, nslyr, nblyr, max_nstrm
use ice_domain_size, only: max_nstrm
use ice_exit, only: abort_ice
use icepack_intfc, only: icepack_warnings_flush, icepack_warnings_aborted

Expand Down Expand Up @@ -99,20 +99,22 @@ module ice_history_shared
n4Dscum ! n4Dicum + num_avail_hist_fields_4Ds

! could set nzilyr = nilyr + nslyr and write Tin+Tsn together into Tinz
integer (kind=int_kind), parameter, public :: &
nzilyr = nilyr, & ! vertical dimension (allows alternative grids)
nzslyr = nslyr, & ! snow
nzblyr = nblyr+2, & ! bio grid
nzalyr = nblyr+4 ! aerosols (2 snow & nblyr+2 bio)
integer (kind=int_kind), public :: &
nzilyr , & ! vertical dimension (allows alternative grids)
nzslyr , & ! snow
nzblyr , & ! bio grid
nzalyr ! aerosols (2 snow & nblyr+2 bio)

type (ice_hist_field), dimension(max_avail_hist_fields), public :: &
avail_hist_fields

integer (kind=int_kind), parameter, public :: &
nvar = 12 , & ! number of grid fields that can be written
! excluding grid vertices
nvarz = 5 , & ! number of category/vertical grid fields written
ncat_hist = ncat ! number of ice categories written <= ncat
nvarz = 5 ! number of category/vertical grid fields written

integer (kind=int_kind), public :: &
ncat_hist ! number of ice categories written <= ncat

real (kind=real_kind), public :: time_beg(max_nstrm), & ! bounds for averaging
time_end(max_nstrm), &
Expand Down
4 changes: 3 additions & 1 deletion cicecore/cicedynB/general/ice_forcing.F90
Expand Up @@ -70,7 +70,7 @@ module ice_forcing
sublim_file, &
snow_file

character (char_len_long), dimension(ncat) :: & ! input data file names
character (char_len_long), dimension(:), allocatable :: & ! input data file names
topmelt_file, &
botmelt_file

Expand Down Expand Up @@ -185,6 +185,8 @@ subroutine alloc_forcing
topmelt_data(nx_block,ny_block,2,max_blocks,ncat), &
botmelt_data(nx_block,ny_block,2,max_blocks,ncat), &
ocn_frc_m(nx_block,ny_block, max_blocks,nfld,12), & ! ocn data for 12 months
topmelt_file(ncat), &
botmelt_file(ncat), &
stat=ierr)
if (ierr/=0) call abort_ice('(alloc_forcing): Out of Memory')

Expand Down
140 changes: 129 additions & 11 deletions cicecore/cicedynB/general/ice_init.F90
Expand Up @@ -17,7 +17,8 @@ module ice_init
use ice_constants, only: c0, c1, c2, c3, p2, p5
use ice_exit, only: abort_ice
use ice_fileunits, only: nu_nml, nu_diag, nml_filename, diag_type, &
ice_stdout, get_fileunit, release_fileunit, bfbflag, flush_fileunit
ice_stdout, get_fileunit, release_fileunit, bfbflag, flush_fileunit, &
ice_IOUnitsMinUnit, ice_IOUnitsMaxUnit
use ice_fileunits, only: inst_suffix
use icepack_intfc, only: icepack_warnings_flush, icepack_warnings_aborted
use icepack_intfc, only: icepack_aggregate
Expand Down Expand Up @@ -54,7 +55,12 @@ subroutine input_data

use ice_broadcast, only: broadcast_scalar, broadcast_array
use ice_diagnostics, only: diag_file, print_global, print_points, latpnt, lonpnt
use ice_domain_size, only: max_nstrm, nilyr, nslyr, max_ntrcr, ncat, n_aero
use ice_domain_size, only: ncat, nilyr, nslyr, nblyr, &
n_aero, n_zaero, n_algae, &
n_doc, n_dic, n_don, n_fed, n_fep, &
n_trbgcz, n_trzs, n_trbri, n_trzaero, &
n_trage, n_trfy, n_trlvl, n_trpnd, n_trbgcs, &
n_bgc, nltrcr, max_nsw, max_ntrcr, max_nstrm
use ice_calendar, only: year_init, istep0, histfreq, histfreq_n, &
dumpfreq, dumpfreq_n, diagfreq, &
npt, dt, ndtd, days_per_year, use_leap_years, &
Expand Down Expand Up @@ -113,6 +119,7 @@ subroutine input_data
logical (kind=log_kind) :: tr_pond_cesm, tr_pond_lvl, tr_pond_topo
integer (kind=int_kind) :: nt_Tsfc, nt_sice, nt_qice, nt_qsno, nt_iage, nt_FY
integer (kind=int_kind) :: nt_alvl, nt_vlvl, nt_apnd, nt_hpnd, nt_ipnd, nt_aero
integer (kind=int_kind) :: numin, numax ! unit number limits

real (kind=real_kind) :: rpcesm, rplvl, rptopo
real (kind=dbl_kind) :: Cf, puny
Expand All @@ -126,8 +133,8 @@ subroutine input_data

namelist /setup_nml/ &
days_per_year, use_leap_years, year_init, istep0, &
dt, npt, ndtd, &
runtype, runid, bfbflag, &
dt, npt, ndtd, numin, &
runtype, runid, bfbflag, numax, &
ice_ic, restart, restart_dir, restart_file, &
restart_ext, use_restart_time, restart_format, lcdf64, &
pointer_file, dumpfreq, dumpfreq_n, dump_last, &
Expand Down Expand Up @@ -180,7 +187,12 @@ subroutine input_data
tr_pond_cesm, restart_pond_cesm, &
tr_pond_lvl, restart_pond_lvl, &
tr_pond_topo, restart_pond_topo, &
tr_aero, restart_aero
tr_aero, restart_aero, &
ncat, nilyr, nslyr, nblyr, &
n_aero, n_zaero, n_algae, &
n_doc, n_dic, n_don, n_fed, n_fep, &
n_trbgcz, n_trzs, n_trbri, n_trzaero, &
n_trage, n_trfy, n_trlvl, n_trpnd, n_trbgcs

!-----------------------------------------------------------------
! default values
Expand All @@ -202,6 +214,8 @@ subroutine input_data
#ifndef CESMCOUPLED
dt = 3600.0_dbl_kind ! time step, s
#endif
numin = 11 ! min allowed unit number
numax = 99 ! max allowed unit number
npt = 99999 ! total number of time steps (dt)
diagfreq = 24 ! how often diag output is written
print_points = .false. ! if true, print point data
Expand Down Expand Up @@ -340,6 +354,28 @@ subroutine input_data
tr_aero = .false. ! aerosols
restart_aero = .false. ! aerosols restart

ncat = 0
nilyr = 0
nslyr = 0
nblyr = 0
n_aero = 0
n_zaero = 0
n_algae = 0
n_doc = 0
n_dic = 0
n_don = 0
n_fed = 0
n_fep = 0
n_trbgcz = 0
n_trzs = 0
n_trbri = 0
n_trzaero = 0
n_trage = 0
n_trfy = 0
n_trlvl = 0
n_trpnd = 0
n_trbgcs = 0

! mushy layer gravity drainage physics
a_rapid_mode = 0.5e-3_dbl_kind ! channel radius for rapid drainage mode (m)
Rac_rapid_mode = 10.0_dbl_kind ! critical Rayleigh number
Expand Down Expand Up @@ -437,6 +473,8 @@ subroutine input_data
! broadcast namelist settings
!-----------------------------------------------------------------

call broadcast_scalar(numin, master_task)
call broadcast_scalar(numax, master_task)
call broadcast_scalar(days_per_year, master_task)
call broadcast_scalar(use_leap_years, master_task)
call broadcast_scalar(year_init, master_task)
Expand Down Expand Up @@ -568,6 +606,27 @@ subroutine input_data
call broadcast_scalar(tr_pond, master_task)
call broadcast_scalar(tr_aero, master_task)
call broadcast_scalar(restart_aero, master_task)
call broadcast_scalar(ncat, master_task)
call broadcast_scalar(nilyr, master_task)
call broadcast_scalar(nslyr, master_task)
call broadcast_scalar(nblyr, master_task)
call broadcast_scalar(n_aero, master_task)
call broadcast_scalar(n_zaero, master_task)
call broadcast_scalar(n_algae, master_task)
call broadcast_scalar(n_doc, master_task)
call broadcast_scalar(n_dic, master_task)
call broadcast_scalar(n_don, master_task)
call broadcast_scalar(n_fed, master_task)
call broadcast_scalar(n_fep, master_task)
call broadcast_scalar(n_trbgcz, master_task)
call broadcast_scalar(n_trzs, master_task)
call broadcast_scalar(n_trbri, master_task)
call broadcast_scalar(n_trzaero, master_task)
call broadcast_scalar(n_trage, master_task)
call broadcast_scalar(n_trfy, master_task)
call broadcast_scalar(n_trlvl, master_task)
call broadcast_scalar(n_trpnd, master_task)
call broadcast_scalar(n_trbgcs, master_task)
call broadcast_scalar(a_rapid_mode, master_task)
call broadcast_scalar(Rac_rapid_mode, master_task)
call broadcast_scalar(aspect_rapid_mode, master_task)
Expand Down Expand Up @@ -803,6 +862,9 @@ subroutine input_data
abort_flag = 18
endif

ice_IOUnitsMinUnit = numin
ice_IOUnitsMaxUnit = numax

call icepack_init_parameters(Cf_in=Cf)
call icepack_warnings_flush(nu_diag)
if (icepack_warnings_aborted()) call abort_ice(error_message=subname//'Icepack Abort1', &
Expand Down Expand Up @@ -832,6 +894,8 @@ subroutine input_data
write(nu_diag,1010) ' print_global = ', print_global
write(nu_diag,1010) ' print_points = ', print_points
write(nu_diag,1010) ' bfbflag = ', bfbflag
write(nu_diag,1020) ' numin = ', numin
write(nu_diag,1020) ' numax = ', numax
write(nu_diag,1050) ' histfreq = ', histfreq(:)
write(nu_diag,1040) ' histfreq_n = ', histfreq_n(:)
write(nu_diag,1010) ' hist_avg = ', hist_avg
Expand Down Expand Up @@ -1038,6 +1102,51 @@ subroutine input_data
write(nu_diag,1010) ' tr_aero = ', tr_aero
write(nu_diag,1010) ' restart_aero = ', restart_aero

write(nu_diag,1020) ' ncat = ', ncat
write(nu_diag,1020) ' nilyr = ', nilyr
write(nu_diag,1020) ' nslyr = ', nslyr
write(nu_diag,1020) ' nblyr = ', nblyr
write(nu_diag,1020) ' n_aero = ', n_aero
write(nu_diag,1020) ' n_zaero = ', n_zaero
write(nu_diag,1020) ' n_algae = ', n_algae
write(nu_diag,1020) ' n_doc = ', n_doc
write(nu_diag,1020) ' n_dic = ', n_dic
write(nu_diag,1020) ' n_don = ', n_don
write(nu_diag,1020) ' n_fed = ', n_fed
write(nu_diag,1020) ' n_fep = ', n_fep
write(nu_diag,1020) ' n_trbgcz = ', n_trbgcz
write(nu_diag,1020) ' n_trzs = ', n_trzs
write(nu_diag,1020) ' n_trbri = ', n_trbri
write(nu_diag,1020) ' n_trzaero = ', n_trzaero
write(nu_diag,1020) ' n_trage = ', n_trage
write(nu_diag,1020) ' n_trfy = ', n_trfy
write(nu_diag,1020) ' n_trlvl = ', n_trlvl
write(nu_diag,1020) ' n_trpnd = ', n_trpnd
write(nu_diag,1020) ' n_trbgcs = ', n_trbgcs

n_bgc = (n_algae*2 + n_doc + n_dic + n_don + n_fed + &
n_fep + n_zaero + 8) ! nit, am, sil, dmspp, dmspd, dms, pon, humic
nltrcr = (n_bgc*n_trbgcz+n_trzs)*n_trbri ! number of zbgc (includes zaero)
! and zsalinity tracers
max_nsw = (nilyr+nslyr+2) & ! total chlorophyll plus aerosols
* (1+n_trzaero) ! number of tracers active in shortwave calculation
max_ntrcr = 1 & ! 1 = surface temperature
+ nilyr & ! ice salinity
+ nilyr & ! ice enthalpy
+ nslyr & ! snow enthalpy
!!!!! optional tracers:
+ n_trage & ! age
+ n_trfy & ! first-year area
+ n_trlvl*2 & ! level/deformed ice
+ n_trpnd*3 & ! ponds
+ n_aero*4 & ! number of aerosols * 4 aero layers
+ n_trbri & ! brine height
+ n_trbgcs*n_bgc & ! skeletal layer BGC
+ n_trzs *n_trbri* nblyr & ! zsalinity (off if n_trbri=0)
+ n_bgc*n_trbgcz*n_trbri*(nblyr+3) & ! zbgc (off if n_trbri=0)
+ n_bgc*n_trbgcz & ! mobile/stationary phase tracer
+ 1 ! for unused tracer flags

nt_Tsfc = 1 ! index tracers, starting with Tsfc = 1
ntrcr = 1 ! count tracers, starting with Tsfc = 1

Expand Down Expand Up @@ -1105,14 +1214,19 @@ subroutine input_data
endif

write(nu_diag,*) ' '
write(nu_diag,1020) 'ntrcr = ', ntrcr
write(nu_diag,1020) ' n_bgc = ', n_bgc
write(nu_diag,1020) ' nltrcr = ', nltrcr
write(nu_diag,1020) ' max_nsw = ', max_nsw
write(nu_diag,1020) ' max_ntrcr = ', max_ntrcr
write(nu_diag,*) ' '
write(nu_diag,1020) ' ntrcr = ', ntrcr
write(nu_diag,*) ' '
write(nu_diag,1020)'nt_sice = ', nt_sice
write(nu_diag,1020)'nt_qice = ', nt_qice
write(nu_diag,1020)'nt_qsno = ', nt_qsno
write(nu_diag,1020) ' nt_sice = ', nt_sice
write(nu_diag,1020) ' nt_qice = ', nt_qice
write(nu_diag,1020) ' nt_qsno = ', nt_qsno
write(nu_diag,*)' '
write(nu_diag,1020)'nilyr', nilyr
write(nu_diag,1020)'nslyr', nslyr
write(nu_diag,1020) ' nilyr = ', nilyr
write(nu_diag,1020) ' nslyr = ', nslyr
write(nu_diag,*)' '

1000 format (a30,2x,f9.2) ! a30 to align formatted, unformatted statements
Expand Down Expand Up @@ -1151,6 +1265,10 @@ subroutine input_data
call broadcast_scalar(nt_hpnd, master_task)
call broadcast_scalar(nt_ipnd, master_task)
call broadcast_scalar(nt_aero, master_task)
call broadcast_scalar(n_bgc, master_task)
call broadcast_scalar(nltrcr, master_task)
call broadcast_scalar(max_nsw, master_task)
call broadcast_scalar(max_ntrcr,master_task)

if (formdrag) then
if (nt_apnd==0) then
Expand Down