Skip to content

Commit

Permalink
Updates to advanced snow physics implementation (CICE-Consortium#852)
Browse files Browse the repository at this point in the history
* Replace tr_snow flag with snwredist, snwgrain in some places (tr_snow is still used more generally).  Fix intent(out) compile issue in ice_read_write.F90. Replace badger with chicoma machine files.

* update icepack to 86cae16d1b7c4c4f8

---------

Co-authored-by: apcraig <anthony.p.craig@gmail.com>
  • Loading branch information
2 people authored and TillRasmussen committed Sep 16, 2023
1 parent 4b1bec1 commit c2407de
Show file tree
Hide file tree
Showing 10 changed files with 145 additions and 117 deletions.
2 changes: 1 addition & 1 deletion cicecore/cicedyn/general/ice_init.F90
Original file line number Diff line number Diff line change
Expand Up @@ -1356,7 +1356,7 @@ subroutine input_data
abort_list = trim(abort_list)//":8"
endif

if (snwredist(1:4) /= 'none' .and. .not. tr_snow) then
if (snwredist(1:3) == 'ITD' .and. .not. tr_snow) then
if (my_task == master_task) then
write (nu_diag,*) 'ERROR: snwredist on but tr_snow=F'
write (nu_diag,*) 'ERROR: Use tr_snow=T for snow redistribution'
Expand Down
15 changes: 7 additions & 8 deletions cicecore/cicedyn/general/ice_step_mod.F90
Original file line number Diff line number Diff line change
Expand Up @@ -275,7 +275,7 @@ subroutine step_therm1 (dt, iblk)

logical (kind=log_kind) :: &
tr_iage, tr_FY, tr_iso, tr_aero, tr_pond, &
tr_pond_lvl, tr_pond_topo, calc_Tsfc, highfreq, tr_snow
tr_pond_lvl, tr_pond_topo, calc_Tsfc, snwgrain

real (kind=dbl_kind) :: &
puny ! a very small number
Expand All @@ -296,13 +296,12 @@ subroutine step_therm1 (dt, iblk)

call icepack_query_parameters(puny_out=puny)
call icepack_query_parameters(calc_Tsfc_out=calc_Tsfc)
call icepack_query_parameters(highfreq_out=highfreq)
call icepack_query_parameters(snwgrain_out=snwgrain)
call icepack_query_tracer_sizes(ntrcr_out=ntrcr)
call icepack_query_tracer_flags( &
tr_iage_out=tr_iage, tr_FY_out=tr_FY, tr_iso_out=tr_iso, &
tr_aero_out=tr_aero, tr_pond_out=tr_pond, &
tr_pond_lvl_out=tr_pond_lvl, tr_pond_topo_out=tr_pond_topo, &
tr_snow_out=tr_snow)
tr_pond_lvl_out=tr_pond_lvl, tr_pond_topo_out=tr_pond_topo)
call icepack_query_tracer_indices( &
nt_apnd_out=nt_apnd, nt_hpnd_out=nt_hpnd, nt_ipnd_out=nt_ipnd, &
nt_alvl_out=nt_alvl, nt_vlvl_out=nt_vlvl, nt_Tsfc_out=nt_Tsfc, &
Expand Down Expand Up @@ -357,15 +356,15 @@ subroutine step_therm1 (dt, iblk)
do j = jlo, jhi
do i = ilo, ihi

if (tr_snow) then
if (snwgrain) then
do n = 1, ncat
do k = 1, nslyr
rsnwn (k,n) = trcrn(i,j,nt_rsnw +k-1,n,iblk)
smicen(k,n) = trcrn(i,j,nt_smice+k-1,n,iblk)
smliqn(k,n) = trcrn(i,j,nt_smliq+k-1,n,iblk)
enddo
enddo
endif ! tr_snow
endif ! snwgrain

if (tr_iso) then ! trcrn(nt_iso*) has units kg/m^3
do n=1,ncat
Expand Down Expand Up @@ -556,15 +555,15 @@ subroutine step_therm1 (dt, iblk)

endif

if (tr_snow) then
if (snwgrain) then
do n = 1, ncat
do k = 1, nslyr
trcrn(i,j,nt_rsnw +k-1,n,iblk) = rsnwn (k,n)
trcrn(i,j,nt_smice+k-1,n,iblk) = smicen(k,n)
trcrn(i,j,nt_smliq+k-1,n,iblk) = smliqn(k,n)
enddo
enddo
endif ! tr_snow
endif ! snwgrain

if (tr_iso) then
do n = 1, ncat
Expand Down
1 change: 1 addition & 0 deletions cicecore/cicedyn/infrastructure/ice_read_write.F90
Original file line number Diff line number Diff line change
Expand Up @@ -1272,6 +1272,7 @@ subroutine ice_read_nc_xy(fid, nrec, varname, work, diag, &
if (orca_halogrid .and. .not. present(restart_ext)) deallocate(work_g2)

#else
work = c0 ! to satisfy intent(out) attribute
call abort_ice(subname//' ERROR: USE_NETCDF cpp not defined', &
file=__FILE__, line=__LINE__)
#endif
Expand Down
6 changes: 4 additions & 2 deletions configuration/scripts/cice.batch.csh
Original file line number Diff line number Diff line change
Expand Up @@ -184,7 +184,7 @@ cat >> ${jobfile} <<EOFB
###SBATCH --mail-user username@domain.com
EOFB

else if (${ICE_MACHINE} =~ badger*) then
else if (${ICE_MACHINE} =~ chicoma*) then
cat >> ${jobfile} << EOFB
#SBATCH -J ${ICE_CASENAME}
#SBATCH -t ${batchtime}
Expand All @@ -194,7 +194,9 @@ cat >> ${jobfile} << EOFB
#SBATCH -o slurm%j.out
###SBATCH --mail-type END,FAIL
###SBATCH --mail-user=eclare@lanl.gov
#SBATCH --qos=standby
##SBATCH --qos=debug
#SBATCH --qos=standard
##SBATCH --qos=standby
EOFB

else if (${ICE_MACHINE} =~ fram*) then
Expand Down
4 changes: 2 additions & 2 deletions configuration/scripts/cice.launch.csh
Original file line number Diff line number Diff line change
Expand Up @@ -119,14 +119,14 @@ EOFR
endif

#=======
else if (${ICE_MACHCOMP} =~ badger*) then
else if (${ICE_MACHCOMP} =~ chicoma*) then
if (${ICE_COMMDIR} =~ serial*) then
cat >> ${jobfile} << EOFR
./cice >&! \$ICE_RUNLOG_FILE
EOFR
else
cat >> ${jobfile} << EOFR
mpirun -np ${ntasks} ./cice >&! \$ICE_RUNLOG_FILE
srun -n ${ntasks} -c ${nthrds} ./cice >&! \$ICE_RUNLOG_FILE
EOFR
endif

Expand Down
56 changes: 0 additions & 56 deletions configuration/scripts/machines/Macros.badger_intel

This file was deleted.

58 changes: 58 additions & 0 deletions configuration/scripts/machines/Macros.chicoma_intel
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
#==============================================================================
# Macros file for LANL chicoma, intel compiler
#==============================================================================

CPP := fpp
CPPDEFS := -DFORTRANUNDERSCORE ${ICE_CPPDEFS}
CFLAGS := -c -O2 -fp-model precise -fcommon

FIXEDFLAGS := -132
FREEFLAGS := -FR
FFLAGS := -fp-model precise -convert big_endian -assume byterecl -ftz -traceback
# -mcmodel medium -shared-intel
FFLAGS_NOOPT:= -O0

ifeq ($(ICE_BLDDEBUG), true)
FFLAGS += -O0 -g -check uninit -check bounds -check pointers -fpe0 -check noarg_temp_created
# FFLAGS += -O0 -g -check all -fpe0 -ftrapuv -fp-model except -check noarg_temp_created -init=snan,arrays
else
FFLAGS += -O2
endif

SCC := cc
SFC := ftn
MPICC := cc
MPIFC := ftn

ifeq ($(ICE_COMMDIR), mpi)
FC := $(MPIFC)
CC := $(MPICC)
else
FC := $(SFC)
CC := $(SCC)
endif
LD:= $(FC)

# defined by module
#NETCDF_PATH := $(NETCDF_DIR)
NETCDF_PATH := /opt/cray/pe/netcdf-hdf5parallel/4.9.0.1/intel/19.0/
#PNETCDF_PATH := $(PNETCDF)
#PNETCDF_PATH := /glade/apps/opt/pnetcdf/1.3.0/intel/default
#LAPACK_LIBDIR := /glade/apps/opt/lapack/3.4.2/intel/12.1.5/lib

#PIO_CONFIG_OPTS:= --enable-filesystem-hints=gpfs

#INCLDIR := $(INCLDIR)
INCLDIR += -I$(NETCDF_PATH)/include

LIB_NETCDF := $(NETCDF_PATH)/lib
#LIB_PNETCDF := $(PNETCDF_PATH)/lib
#LIB_MPI := $(IMPILIBDIR)
SLIBS := -L$(LIB_NETCDF) -lnetcdf -lnetcdff

ifeq ($(ICE_THREADED), true)
LDFLAGS += -qopenmp
CFLAGS += -qopenmp
FFLAGS += -qopenmp
endif

47 changes: 0 additions & 47 deletions configuration/scripts/machines/env.badger_intel

This file was deleted.

71 changes: 71 additions & 0 deletions configuration/scripts/machines/env.chicoma_intel
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
#!/bin/csh -f

# this works (current defaults with PrgEnv-intel)
#Currently Loaded Modules:
# 1) craype-x86-rome 7) python/3.10-anaconda-2023.03 13) cray-mpich/8.1.21
# 2) libfabric/1.15.0.0 8) craype/2.7.19 14) totalview/2023.1.6
# 3) craype-network-ofi 9) cray-dsmml/0.2.2 15) use.own
# 4) perftools-base/22.09.0 10) cray-libsci/22.11.1.2 16) idl/8.5
# 5) xpmem/2.4.4-2.3_13.8__gff0e1d9.shasta 11) PrgEnv-intel/8.3.3 17) cray-hdf5-parallel/1.12.2.1
# 6) git/2.40.0 12) intel/2022.2.1 18) cray-netcdf-hdf5parallel/4.9.0.1

set inp = "undefined"
if ($#argv == 1) then
set inp = $1
endif

if ("$inp" != "-nomodules") then

#source /opt/modules/default/init/csh

#module unload PrgEnv-cray
#module unload PrgEnv-gnu
#module unload PrgEnv-intel
#module unload PrgEnv-pgi
#module load PrgEnv-intel/8.3.3

#module unload intel
#module load intel/2022.2.1

#module unload cray-mpich
#module unload cray-mpich2
#module load cray-mpich/8.1.21

#module unload netcdf
#module unload cray-netcdf
#module unload cray-hdf5
#module unload cray-hdf5-parallel
#module unload cray-netcdf-hdf5parallel
#module unload cray-parallel-netcdf
#module load cray-hdf5/1.12.2.1
#module load cray-netcdf/4.9.0.1
#module load cray-hdf5-parallel/1.12.2.1
#module load cray-netcdf-hdf5parallel/4.9.0.1

#module unload cray-libsci
#module unload craype-hugepages2M
#module load craype-broadwell

#setenv NETCDF_PATH ${NETCDF_DIR}
#setenv NETCDF_PATH /opt/cray/pe/netcdf/4.9.0.1/intel/19.0
#setenv NETCDF_PATH /opt/cray/pe/netcdf-hdf5parallel/4.9.0.1/intel/19.0
limit coredumpsize unlimited
limit stacksize unlimited
setenv OMP_STACKSIZE 64M

endif

setenv ICE_MACHINE_MACHNAME chicoma
setenv ICE_MACHINE_MACHINFO "HPE Cray EX, AMD EPYC 7H12 processors"
setenv ICE_MACHINE_ENVNAME intel
setenv ICE_MACHINE_ENVINFO "PrgEnv-intel/8.3.3 intel/2022.2.1 cray-mpich/8.1.21 cray-hdf4-parallel/1/12.2.1 cray-netcdf-hdf5parallel/4.9.0.1"
setenv ICE_MACHINE_MAKE gmake
setenv ICE_MACHINE_WKDIR /lustre/scratch5/$user/CICE_RUNS
setenv ICE_MACHINE_INPUTDATA /usr/projects/climate/eclare/DATA/Consortium
setenv ICE_MACHINE_BASELINE /lustre/scratch5/$user/CICE_BASELINE
setenv ICE_MACHINE_SUBMIT "sbatch "
setenv ICE_MACHINE_ACCT t23_cice
setenv ICE_MACHINE_QUEUE "debug"
setenv ICE_MACHINE_TPNODE 128 # tasks per node
setenv ICE_MACHINE_BLDTHRDS 12
setenv ICE_MACHINE_QSTAT "squeue --jobs="

0 comments on commit c2407de

Please sign in to comment.