diff --git a/columnphysics/icepack_flux.F90 b/columnphysics/icepack_flux.F90 index 5be93277d..ce0b4b72c 100644 --- a/columnphysics/icepack_flux.F90 +++ b/columnphysics/icepack_flux.F90 @@ -9,10 +9,10 @@ module icepack_flux use icepack_kinds - use icepack_parameters, only: c1, emissivity + use icepack_parameters, only: c1, emissivity, snwgrain use icepack_warnings, only: warnstr, icepack_warnings_add use icepack_warnings, only: icepack_warnings_setabort, icepack_warnings_aborted - use icepack_tracers, only: tr_iso, tr_snow + use icepack_tracers, only: tr_iso implicit none private @@ -217,7 +217,7 @@ subroutine merge_fluxes (aicen, & meltt = meltt + melttn * aicen meltb = meltb + meltbn * aicen melts = melts + meltsn * aicen - if (tr_snow) then + if (snwgrain) then meltsliq = meltsliq + meltsliqn * aicen endif if (present(dsnow)) then diff --git a/columnphysics/icepack_itd.F90 b/columnphysics/icepack_itd.F90 index c42dd8401..f6f042106 100644 --- a/columnphysics/icepack_itd.F90 +++ b/columnphysics/icepack_itd.F90 @@ -28,13 +28,13 @@ module icepack_itd use icepack_kinds use icepack_parameters, only: c0, c1, c2, c3, c15, c25, c100, p1, p01, p001, p5, puny use icepack_parameters, only: Lfresh, rhos, ice_ref_salinity, hs_min, cp_ice, rhoi - use icepack_parameters, only: rhosi, sk_l, hs_ssl, min_salin, rsnw_fall + use icepack_parameters, only: rhosi, sk_l, hs_ssl, min_salin, rsnw_fall, rhosnew use icepack_tracers, only: nt_Tsfc, nt_qice, nt_qsno, nt_aero, nt_isosno, nt_isoice use icepack_tracers, only: nt_apnd, nt_hpnd, nt_fbri, tr_brine, nt_bgc_S, bio_index - use icepack_tracers, only: n_iso, tr_iso, tr_snow, nt_smice, nt_rsnw, nt_rhos, nt_sice + use icepack_tracers, only: n_iso, tr_iso, nt_smice, nt_rsnw, nt_rhos, nt_sice use icepack_tracers, only: icepack_compute_tracers use icepack_parameters, only: solve_zsal, skl_bgc, z_tracers, hi_min - use icepack_parameters, only: kcatbound, kitd, saltflux_option + use icepack_parameters, only: kcatbound, kitd, saltflux_option, snwgrain, snwredist use icepack_therm_shared, only: Tmin use icepack_warnings, only: warnstr, icepack_warnings_add use icepack_warnings, only: icepack_warnings_setabort, icepack_warnings_aborted @@ -1239,9 +1239,13 @@ subroutine zap_small_areas (dt, ntrcr, & enddo endif if (tr_brine) trcrn(nt_fbri,n) = c1 - if (tr_snow) then + if (snwredist(1:3) == 'ITD') then + do k = 1, nslyr + trcrn(nt_rhos +k-1,n) = rhosnew + enddo + endif + if (snwgrain) then do k = 1, nslyr - trcrn(nt_rhos +k-1,n) = rhos trcrn(nt_smice+k-1,n) = rhos trcrn(nt_rsnw +k-1,n) = rsnw_fall enddo diff --git a/columnphysics/icepack_mechred.F90 b/columnphysics/icepack_mechred.F90 index 845ac6ddb..3ddd36d31 100644 --- a/columnphysics/icepack_mechred.F90 +++ b/columnphysics/icepack_mechred.F90 @@ -428,12 +428,7 @@ subroutine ridge_ice (dt, ndtd, & ! If done, exit. If not, prepare to ridge again. !----------------------------------------------------------------- - if (iterate_ridging) then - if (niter > 1) then - write(warnstr,*) subname, 'Repeat ridging, niter =', niter - call icepack_warnings_add(warnstr) - endif - else + if (.not.iterate_ridging) then exit rdg_iteration endif diff --git a/columnphysics/icepack_snow.F90 b/columnphysics/icepack_snow.F90 index 94a0f1251..8def9b45f 100644 --- a/columnphysics/icepack_snow.F90 +++ b/columnphysics/icepack_snow.F90 @@ -309,14 +309,12 @@ subroutine icepack_step_snow(dt, nilyr, & ! Initialize effective snow density (compaction) for new snow !----------------------------------------------------------------- - if (trim(snwredist) /= 'none') then + if (snwredist(1:3) == 'ITD') then do n = 1, ncat do k = 1, nslyr if (rhos_cmpn(k,n) < rhosmin) rhos_cmpn(k,n) = rhosnew enddo enddo - else - rhos_cmpn(:,:) = rhos endif !----------------------------------------------------------------- diff --git a/columnphysics/icepack_therm_itd.F90 b/columnphysics/icepack_therm_itd.F90 index 301369aa7..ccf5035fe 100644 --- a/columnphysics/icepack_therm_itd.F90 +++ b/columnphysics/icepack_therm_itd.F90 @@ -25,7 +25,7 @@ module icepack_therm_itd use icepack_parameters, only: rhos, rhoi, Lfresh, ice_ref_salinity use icepack_parameters, only: phi_init, dsin0_frazil, hs_ssl, salt_loss use icepack_parameters, only: Tliquidus_max - use icepack_parameters, only: rhosi, conserv_check, rhosmin + use icepack_parameters, only: rhosi, conserv_check, rhosmin, snwredist use icepack_parameters, only: kitd, ktherm use icepack_parameters, only: z_tracers, solve_zsal, hfrazilmin, hi_min use icepack_parameters, only: saltflux_option @@ -36,7 +36,7 @@ module icepack_therm_itd use icepack_tracers, only: nt_apnd, nt_hpnd, nt_aero, nt_isosno, nt_isoice use icepack_tracers, only: nt_Tsfc, nt_iage, nt_FY, nt_fsd, nt_rhos, nt_sice use icepack_tracers, only: nt_alvl, nt_vlvl - use icepack_tracers, only: tr_pond_lvl, tr_pond_topo, tr_snow + use icepack_tracers, only: tr_pond_lvl, tr_pond_topo use icepack_tracers, only: tr_iage, tr_FY, tr_lvl, tr_aero, tr_iso, tr_brine, tr_fsd use icepack_tracers, only: n_aero, n_iso use icepack_tracers, only: bio_index @@ -570,7 +570,7 @@ subroutine linear_itd (ncat, hin_max, & enddo enddo ! maintain rhos_cmp positive definiteness - if (tr_snow) then + if (snwredist(1:3) == 'ITD') then do n = 1, ncat do k = nt_rhos, nt_rhos+nslyr-1 trcrn(k,n) = max(trcrn(k,n)-rhosmin, c0) @@ -597,7 +597,7 @@ subroutine linear_itd (ncat, hin_max, & enddo enddo ! maintain rhos_cmp positive definiteness - if (tr_snow) then + if (snwredist(1:3) == 'ITD') then do n = 1, ncat do k = nt_rhos, nt_rhos+nslyr-1 trcrn(k,n) = trcrn(k,n) + rhosmin diff --git a/columnphysics/icepack_therm_mushy.F90 b/columnphysics/icepack_therm_mushy.F90 index 80abd03f5..999c92af7 100644 --- a/columnphysics/icepack_therm_mushy.F90 +++ b/columnphysics/icepack_therm_mushy.F90 @@ -3307,7 +3307,7 @@ subroutine flood_ice(hsn, hin, & ! density of newly formed snow-ice rho_snowice = phi_snowice * rho_ocn + (c1 - phi_snowice) * rhoi endif ! freeboard_density > c0 -! endif ! tr_snow +! endif ! snwgrain if (freeboard_density > c0) then ! ice is flooded diff --git a/columnphysics/icepack_therm_vertical.F90 b/columnphysics/icepack_therm_vertical.F90 index 68e70990e..ceff4ffd6 100644 --- a/columnphysics/icepack_therm_vertical.F90 +++ b/columnphysics/icepack_therm_vertical.F90 @@ -135,7 +135,9 @@ subroutine thermo_vertical (nilyr, nslyr, & zSin , & ! internal ice layer salinities rsnw , & ! snow grain radius (10^-6 m) smice , & ! ice mass tracer in snow (kg/m^3) - smliq , & ! liquid water mass tracer in snow (kg/m^3) + smliq ! liquid water mass tracer in snow (kg/m^3) + + real (kind=dbl_kind), dimension (:), intent(out) :: & massice , & ! ice mass in snow (kg/m^2) massliq ! liquid water mass in snow (kg/m^2) @@ -261,6 +263,8 @@ subroutine thermo_vertical (nilyr, nslyr, & zTsn(:) = c0 zTin(:) = c0 meltsliq= c0 + massice(:) = c0 + massliq(:) = c0 if (calc_Tsfc) then fsensn = c0 @@ -324,12 +328,6 @@ subroutine thermo_vertical (nilyr, nslyr, & smice, smliq) if (icepack_warnings_aborted(subname)) return - ! reinitialize mass in case of snow-ice formation - if (snwgrain) then - massice(:) = smice(:) * hslyr - massliq(:) = smliq(:) * hslyr - endif - else ! ktherm call temperature_changes(dt, & @@ -352,6 +350,12 @@ subroutine thermo_vertical (nilyr, nslyr, & endif ! ktherm + ! mass of ice and liquid water in snow + if (snwgrain) then + massice(:) = smice(:) * hslyr + massliq(:) = smliq(:) * hslyr + endif + ! intermediate energy for error check einter = c0 @@ -1232,11 +1236,8 @@ subroutine thickness_changes (nilyr, nslyr, & if (hsn > puny) then ! add snow with enthalpy zqsn(1) dhs = econ / (zqsn(1) - rhos*Lvap) ! econ < 0, dhs > 0 - mass = massice(1) + massliq(1) - massi = c0 - if (dzs(1) > puny) massi = c1 + dhs/dzs(1) - massice(1) = massice(1) * massi - massliq(1) = max(c0, mass + rhos*dhs - massice(1)) ! conserve new total mass + ! assume all condensation becomes ice (no liquid) + massice(1) = massice(1) + dhs*rhos dzs(1) = dzs(1) + dhs evapn = evapn + dhs*rhos @@ -2354,8 +2355,9 @@ subroutine icepack_step_therm1(dt, ncat, nilyr, nslyr, & n ! category index real (kind=dbl_kind) :: & - rnslyr , & ! 1 / nslyr - worka, workb ! temporary variables + worka , & ! temporary variables + workb , & + workc ! 2D coupler variables (computed for each category, then aggregated) real (kind=dbl_kind) :: & @@ -2462,6 +2464,10 @@ subroutine icepack_step_therm1(dt, ncat, nilyr, nslyr, & l_meltsliq = c0 l_meltsliqn = c0 + ! solid and liquid components of snow mass + massicen(:,:) = c0 + massliqn(:,:) = c0 + !----------------------------------------------------------------- ! Initialize rate of snow loss to leads !----------------------------------------------------------------- @@ -2486,21 +2492,21 @@ subroutine icepack_step_therm1(dt, ncat, nilyr, nslyr, & fsnow = fsnow*(c1-worka) endif ! snwredist +!echmod - remove all of this code - non-BFB because of values carried in tracer arrays when the snow physics options are not active !----------------------------------------------------------------- ! solid and liquid components of snow mass !----------------------------------------------------------------- - - massicen(:,:) = c0 - massliqn(:,:) = c0 - if (snwgrain) then - rnslyr = c1 / real(nslyr, dbl_kind) - do n = 1, ncat - do k = 1, nslyr - massicen(k,n) = smicen(k,n) * vsnon(n) * rnslyr ! kg/m^2 - massliqn(k,n) = smliqn(k,n) * vsnon(n) * rnslyr - enddo - enddo - endif +! massicen(:,:) = c0 +! massliqn(:,:) = c0 +! if (snwgrain) then +! rnslyr = c1 / real(nslyr, dbl_kind) +! do n = 1, ncat +! do k = 1, nslyr +! massicen(k,n) = smicen(k,n) * vsnon(n) * rnslyr ! kg/m^2 +! massliqn(k,n) = smliqn(k,n) * vsnon(n) * rnslyr +! enddo +! enddo +! endif !----------------------------------------------------------------- ! Update the neutral drag coefficients to account for form drag @@ -2896,14 +2902,10 @@ subroutine icepack_step_therm1(dt, ncat, nilyr, nslyr, & if (snwgrain) then do n = 1, ncat if (vsnon(n) > puny) then + workc = real(nslyr, dbl_kind) * aicen(n) / vsnon(n) do k = 1, nslyr - smicen(k,n) = massicen(k,n) / (vsnon(n) * rnslyr) - smliqn(k,n) = massliqn(k,n) / (vsnon(n) * rnslyr) - worka = smicen(k,n) + smliqn(k,n) - if (worka > puny) then - smicen(k,n) = rhos * smicen(k,n) / worka - smliqn(k,n) = rhos * smliqn(k,n) / worka - endif + smicen(k,n) = massicen(k,n) * workc + smliqn(k,n) = massliqn(k,n) * workc enddo else ! reset to default values do k = 1, nslyr diff --git a/columnphysics/icepack_tracers.F90 b/columnphysics/icepack_tracers.F90 index 753e25952..e483a70ac 100644 --- a/columnphysics/icepack_tracers.F90 +++ b/columnphysics/icepack_tracers.F90 @@ -7,7 +7,8 @@ module icepack_tracers use icepack_kinds - use icepack_parameters, only: c0, c1, puny, rhos, rsnw_fall, Tocnfrz, tfrz_option + use icepack_parameters, only: c0, c1, puny, rhos, rsnw_fall, rhosnew, Tocnfrz, tfrz_option + use icepack_parameters, only: snwredist, snwgrain use icepack_warnings, only: warnstr, icepack_warnings_add use icepack_warnings, only: icepack_warnings_setabort, icepack_warnings_aborted @@ -105,7 +106,7 @@ module icepack_tracers tr_pond = .false., & ! if .true., use melt pond tracer tr_pond_lvl = .false., & ! if .true., use level-ice pond tracer tr_pond_topo = .false., & ! if .true., use explicit topography-based ponds - tr_snow = .false., & ! if .true., use snow metamorphosis tracers + tr_snow = .false., & ! if .true., use snow redistribution or metamorphosis tracers tr_iso = .false., & ! if .true., use isotope tracers tr_aero = .false., & ! if .true., use aerosol tracers tr_brine = .false., & ! if .true., brine height differs from ice thickness @@ -219,7 +220,7 @@ subroutine icepack_init_tracer_flags(& tr_pond_in , & ! if .true., use melt pond tracer tr_pond_lvl_in , & ! if .true., use level-ice pond tracer tr_pond_topo_in , & ! if .true., use explicit topography-based ponds - tr_snow_in , & ! if .true., use snow metamorphosis tracers + tr_snow_in , & ! if .true., use snow redistribution or metamorphosis tracers tr_fsd_in , & ! if .true., use floe size distribution tracers tr_iso_in , & ! if .true., use isotope tracers tr_aero_in , & ! if .true., use aerosol tracers @@ -286,7 +287,7 @@ subroutine icepack_query_tracer_flags(& tr_pond_out , & ! if .true., use melt pond tracer tr_pond_lvl_out , & ! if .true., use level-ice pond tracer tr_pond_topo_out , & ! if .true., use explicit topography-based ponds - tr_snow_out , & ! if .true., use snow metamorphosis tracers + tr_snow_out , & ! if .true., use snow redistribution or metamorphosis tracers tr_fsd_out , & ! if .true., use floe size distribution tr_iso_out , & ! if .true., use isotope tracers tr_aero_out , & ! if .true., use aerosol tracers @@ -1302,11 +1303,15 @@ subroutine icepack_compute_tracers (ntrcr, trcr_depend, & enddo if (vicen <= c0 .and. tr_brine) trcrn(nt_fbri) = c1 - if (vsnon <= c0 .and. tr_snow) then - trcrn(nt_rsnw :nt_rsnw +nslyr-1) = rsnw_fall - trcrn(nt_smice:nt_smice+nslyr-1) = rhos - trcrn(nt_rhos :nt_rhos +nslyr-1) = rhos - endif + if (vsnon <= c0) then + if (snwredist(1:3) == 'ITD') then + trcrn(nt_rhos :nt_rhos +nslyr-1) = rhosnew + endif + if (snwgrain) then + trcrn(nt_rsnw :nt_rsnw +nslyr-1) = rsnw_fall + trcrn(nt_smice:nt_smice+nslyr-1) = rhos + endif + endif ! vsnon <= 0 end subroutine icepack_compute_tracers diff --git a/configuration/driver/icedrv_init.F90 b/configuration/driver/icedrv_init.F90 index a89677d24..647480efe 100644 --- a/configuration/driver/icedrv_init.F90 +++ b/configuration/driver/icedrv_init.F90 @@ -509,7 +509,7 @@ subroutine input_data shortwave = 'dEdd' endif - if (snwredist(1:4) /= 'none' .and. .not. tr_snow) then + if (snwredist(1:3) == 'ITD' .and. .not. tr_snow) then write (nu_diag,*) 'WARNING: snwredist on but tr_snow=F' call icedrv_system_abort(file=__FILE__,line=__LINE__) endif @@ -572,11 +572,16 @@ subroutine input_data shortwave = 'dEdd' endif - if (tr_snow .and. trim(shortwave(1:4)) /= 'dEdd') then + if (snwgrain .and. trim(shortwave(1:4)) /= 'dEdd') then write (nu_diag,*) 'WARNING: snow grain radius activated but' write (nu_diag,*) 'WARNING: dEdd shortwave is not.' endif + if (snwredist(1:4) /= 'none' .and. trim(shortwave(1:4)) /= 'dEdd') then + write (nu_diag,*) 'WARNING: snow redistribution activated but' + write (nu_diag,*) 'WARNING: dEdd shortwave is not.' + endif + rfracmin = min(max(rfracmin,c0),c1) rfracmax = min(max(rfracmax,c0),c1) diff --git a/configuration/driver/icedrv_step.F90 b/configuration/driver/icedrv_step.F90 index 2d4fabc88..eb6424487 100644 --- a/configuration/driver/icedrv_step.F90 +++ b/configuration/driver/icedrv_step.F90 @@ -155,7 +155,7 @@ subroutine step_therm1 (dt) nt_aero, nt_isosno, nt_isoice, nt_rsnw, nt_smice, nt_smliq logical (kind=log_kind) :: & - tr_iage, tr_FY, tr_aero, tr_iso, calc_Tsfc, tr_snow + tr_iage, tr_FY, tr_aero, tr_iso, calc_Tsfc, snwgrain real (kind=dbl_kind), dimension(n_aero,2,ncat) :: & aerosno, aeroice ! kg/m^2 @@ -177,6 +177,7 @@ subroutine step_therm1 (dt) call icepack_query_parameters(puny_out=puny) call icepack_query_parameters(calc_Tsfc_out=calc_Tsfc) + call icepack_query_parameters(snwgrain_out=snwgrain) call icepack_warnings_flush(nu_diag) if (icepack_warnings_aborted()) call icedrv_system_abort(string=subname, & file=__FILE__,line= __LINE__) @@ -189,7 +190,7 @@ subroutine step_therm1 (dt) call icepack_query_tracer_flags( & tr_iage_out=tr_iage, tr_FY_out=tr_FY, & - tr_aero_out=tr_aero, tr_iso_out=tr_iso, tr_snow_out=tr_snow) + tr_aero_out=tr_aero, tr_iso_out=tr_iso) call icepack_warnings_flush(nu_diag) if (icepack_warnings_aborted()) call icedrv_system_abort(string=subname, & file=__FILE__,line= __LINE__) @@ -261,7 +262,7 @@ subroutine step_therm1 (dt) enddo endif ! tr_iso - if (tr_snow) then + if (snwgrain) then do n = 1, ncat do k = 1, nslyr rsnwn (k,n) = trcrn(i,nt_rsnw +k-1,n) @@ -269,7 +270,7 @@ subroutine step_therm1 (dt) smliqn(k,n) = trcrn(i,nt_smliq+k-1,n) enddo enddo - endif ! tr_snow + endif ! snwgrain call icepack_step_therm1(dt=dt, ncat=ncat, nilyr=nilyr, nslyr=nslyr, & aicen_init = aicen_init(i,:), & @@ -400,7 +401,7 @@ subroutine step_therm1 (dt) enddo endif ! tr_iso - if (tr_snow) then + if (snwgrain) then do n = 1, ncat do k = 1, nslyr trcrn(i,nt_rsnw +k-1,n) = rsnwn (k,n) @@ -408,7 +409,7 @@ subroutine step_therm1 (dt) trcrn(i,nt_smliq+k-1,n) = smliqn(k,n) enddo enddo - endif ! tr_snow + endif ! snwgrain enddo ! i call icepack_warnings_flush(nu_diag) diff --git a/configuration/scripts/icepack.batch.csh b/configuration/scripts/icepack.batch.csh index b821bf5c3..a104b8ff3 100755 --- a/configuration/scripts/icepack.batch.csh +++ b/configuration/scripts/icepack.batch.csh @@ -142,7 +142,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 ${ICE_RUNLENGTH} @@ -152,7 +152,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} =~ discover*) then diff --git a/configuration/scripts/machines/Macros.badger_intel b/configuration/scripts/machines/Macros.badger_intel deleted file mode 100644 index c572515b9..000000000 --- a/configuration/scripts/machines/Macros.badger_intel +++ /dev/null @@ -1,49 +0,0 @@ -#============================================================================== -# Macros file for LANL badger, intel compiler -#============================================================================== - -CPP := fpp -CPPDEFS := -DFORTRANUNDERSCORE ${ICE_CPPDEFS} -CFLAGS := -c -O2 -fp-model precise -xHost - -FIXEDFLAGS := -132 -FREEFLAGS := -FR -FFLAGS := -fp-model precise -convert big_endian -assume byterecl -ftz -traceback -xHost -FFLAGS_NOOPT:= -O0 - -ifeq ($(ICE_BLDDEBUG), true) - FFLAGS += -O0 -g -check uninit -check bounds -check pointers -fpe0 -check noarg_temp_created -else -# FFLAGS += -O2 - FFLAGS += -O1 -endif - -SCC := icc -SFC := ifort -CC := $(SCC) -FC := $(SFC) -LD := $(FC) - -NETCDF_PATH := /usr/projects/hpcsoft/toss3/common/netcdf/4.4.0_intel-18.0.5 -PNETCDF_PATH := /usr/projects/hpcsoft/toss3/badger/netcdf/4.4.0_intel-18.0.5_openmpi-2.1.2 - -PIO_CONFIG_OPTS:= --enable-filesystem-hints=gpfs - -ifeq ($(ICE_IOTYPE), netcdf) - INCLDIR := $(INCLDIR) -I$(NETCDF_PATH)/include -I$(PNETCDF_PATH)/include - - LIB_NETCDF := $(NETCDF_PATH)/lib - LIB_PNETCDF := $(PNETCDF_PATH)/lib - LIB_MPI := $(IMPILIBDIR) - - SLIBS := -L$(LIB_NETCDF) -lnetcdf -L$(LIB_PNETCDF) -lnetcdff -else - SLIBS := -endif - -ifeq ($(ICE_THREADED), true) - LDFLAGS += -qopenmp - CFLAGS += -qopenmp - FFLAGS += -qopenmp -endif - diff --git a/configuration/scripts/machines/Macros.chicoma_intel b/configuration/scripts/machines/Macros.chicoma_intel new file mode 100644 index 000000000..983855811 --- /dev/null +++ b/configuration/scripts/machines/Macros.chicoma_intel @@ -0,0 +1,48 @@ +#============================================================================== +# 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 + +FC := $(SFC) +CC := $(SCC) +LD:= $(FC) + +# defined by module +#NETCDF_PATH := $(NETCDF_DIR) +NETCDF_PATH := /opt/cray/pe/netcdf-hdf5parallel/4.9.0.1/intel/19.0/ +#LAPACK_LIBDIR := /glade/apps/opt/lapack/3.4.2/intel/12.1.5/lib + +#INCLDIR := $(INCLDIR) +INCLDIR += -I$(NETCDF_PATH)/include + +LIB_NETCDF := $(NETCDF_PATH)/lib +#LIB_MPI := $(IMPILIBDIR) +SLIBS := -L$(LIB_NETCDF) -lnetcdf -lnetcdff + +ifeq ($(ICE_THREADED), true) + LDFLAGS += -qopenmp + CFLAGS += -qopenmp + FFLAGS += -qopenmp +endif + diff --git a/configuration/scripts/machines/env.badger_intel b/configuration/scripts/machines/env.badger_intel deleted file mode 100755 index a7a327055..000000000 --- a/configuration/scripts/machines/env.badger_intel +++ /dev/null @@ -1,51 +0,0 @@ -#!/bin/tcsh -f - -set inp = "undefined" -if ($#argv == 1) then - set inp = $1 -endif - -if ("$inp" != "-nomodules") then - -#source /usr/share/Modules/init/csh - -#module purge -#module load intel -#module load openmpi -module unload hdf5-serial -module unload hdf5-parallel -module unload netcdf-serial -module unload netcdf-h5parallel -module load hdf5-serial -module load netcdf-serial/4.4.0 -module load hdf5-parallel -module load netcdf-h5parallel/4.4.0 - -setenv NETCDF_PATH /usr/projects/climate/SHARED_CLIMATE/software/conejo/netcdf/3.6.3/intel-13.0.1 -setenv PNETCDF_PATH /usr/projects/climate/SHARED_CLIMATE/software/conejo/parallel-netcdf/1.3.1/intel-13.0.1/openmpi-1.6.3 -#setenv LAPACK_LIBDIR /glade/apps/opt/lapack/3.4.2/intel/12.1.5/lib - -#setenv OMP_STACKSIZE 256M -#setenv MP_LABELIO yes -#setenv MP_INFOLEVEL 2 -#setenv MP_SHARED_MEMORY yes -#setenv MP_EUILIB us -#setenv MP_EAGER_LIMIT 0 - -endif - -setenv ICE_MACHINE_MACHNAME badger -setenv ICE_MACHINE_MACHINFO "Penguin Intel Xeon Broadwell" -setenv ICE_MACHINE_ENVNAME intel -setenv ICE_MACHINE_ENVINFO "(Note: can vary) ifort 19.0.4.243 20190416, netcdf4.4.0" -setenv ICE_MACHINE_MAKE gmake -setenv ICE_MACHINE_WKDIR /net/scratch4/$user/ICEPACK_RUNS -setenv ICE_MACHINE_INPUTDATA /usr/projects/climate/eclare/DATA/Consortium -setenv ICE_MACHINE_BASELINE /net/scratch4/$user/ICEPACK_BASELINE -setenv ICE_MACHINE_SUBMIT "sbatch " -#setenv ICE_MACHINE_ACCT e3sm -setenv ICE_MACHINE_ACCT climatehilat -setenv ICE_MACHINE_QUEUE "default" -setenv ICE_MACHINE_TPNODE 36 -setenv ICE_MACHINE_BLDTHRDS 1 -setenv ICE_MACHINE_QSTAT "squeue --jobs=" diff --git a/configuration/scripts/machines/env.chicoma_intel b/configuration/scripts/machines/env.chicoma_intel new file mode 100755 index 000000000..182280f95 --- /dev/null +++ b/configuration/scripts/machines/env.chicoma_intel @@ -0,0 +1,70 @@ +#!/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 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/ICEPACK_RUNS +setenv ICE_MACHINE_INPUTDATA /usr/projects/climate/eclare/DATA/Consortium +setenv ICE_MACHINE_BASELINE /lustre/scratch5/$user/ICEPACK_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="