Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
57 commits
Select commit Hold shift + click to select a range
1071b67
Import from /short/p66/dhb599/ACCESS-CM2/submodels/cice_GC3_GA7_hxyo/
Aug 22, 2016
51af00a
Updated cpl_forcing_handler.F90 from /short/p66/dhb599/ACCESS-CM2/sub…
Aug 31, 2016
6f30219
I2A coupling bug fix
Nov 10, 2016
8d76453
ice errmax tolorance x 10
Nov 28, 2016
4520c26
dhb599 mod driver files
Aug 28, 2017
2b434c7
ukmo:changeset 145,146,163 & 134
Aug 28, 2017
2b9eba7
Bug fix in ice constants
Aug 31, 2017
823a987
add dhb599 iceberg scheme
Jan 16, 2018
407ade8
New branch for GSI 8.1
Sep 17, 2018
a24447b
Remove symliink before adding back as file
Sep 17, 2018
6e363ca
Add code changes from Arnold's cice512_av853
Sep 17, 2018
9953401
Add iceberg_factor (from Dave)
Sep 19, 2018
8b553d9
Add extra call to set_calendar to fix naming of history files in leap…
Mar 13, 2019
575c1e7
Write messages to stderr and call mpi_abort with correct arguments.
Mar 14, 2019
d1c40ef
Create netCDF files as netcdf4-classic for better detection of trunca…
Sep 8, 2020
d49e6bc
Only write namelist info from master PE
Aug 20, 2021
61ab72a
Add coupling timers for ACCESS
Aug 25, 2021
6aa315e
Fix Fortran syntax errors to compile using gcc 12
harshula Jan 16, 2023
3bd7d03
Stop running git commands from bld/build.sh
harshula Jan 17, 2023
59748e0
Merge pull request #5 from ACCESS-NRI/development
harshula Mar 27, 2023
e7afb72
Fix gcc error: Period required in format specifier E at (1)
harshula Mar 29, 2023
19086b3
Add compilation ci (#8)
Quartzer2 Aug 2, 2023
d134c2a
Replaced old test CI with generic CI
CodeGat Aug 30, 2023
fc95653
Merge pull request #9 from ACCESS-NRI/generic-ci
CodeGat Aug 31, 2023
18ff40c
References new build-ci model-1-build.yml workflow
CodeGat Sep 22, 2023
65bb9ed
Merge pull request #10 from ACCESS-NRI/ref-new-workflow
CodeGat Sep 22, 2023
fee39b4
Update README.md
anton-seaice Apr 17, 2024
ca5a71c
Merge pull request #14 from ACCESS-NRI/iss13
anton-seaice Apr 17, 2024
e8e94d5
remove unused submodule (#18)
anton-seaice Oct 31, 2024
0a84ab1
Create README.md
anton-seaice Nov 28, 2024
8be14fe
Add build ci (#21)
anton-seaice Jan 28, 2025
4cc7abd
bld/makdep.c: add a return type to main() (#22)
harshula Mar 2, 2025
2898631
bld/makdep.c: add a return type to main() (#22)
harshula Mar 2, 2025
a09f25c
Add license file (#27)
anton-seaice Apr 15, 2025
ec1e2cb
Set netcdf output calendar attributes correctly (#26)
anton-seaice Apr 17, 2025
77baf8a
Add license file (#29)
anton-seaice May 21, 2025
bbf2892
Set netcdf history timestamp in middle of month (#34)
anton-seaice Jun 3, 2025
ed83b97
Modify dump_last for use in esm1.6
blimlim Jun 3, 2025
d87c459
Keep original implementation for non-coupled model
blimlim Jun 4, 2025
5471bbf
Merge pull request #38 from ACCESS-NRI/esm1.6-dump-last
blimlim Jun 4, 2025
8f074fa
expose ice_ref_salinity to the namelist (#36)
anton-seaice Jun 4, 2025
15fa7de
Set cp_ocn to same value as MOM (#40)
anton-seaice Jun 6, 2025
267d4be
Expose ksno (thermal conductivity of snow ) to the namelist (#41)
anton-seaice Jun 16, 2025
58eeccf
ESM1.6 Readme (#44)
anton-seaice Jun 17, 2025
90a7164
Setup coupling for esm1.6 (#33)
anton-seaice Jun 17, 2025
d8804b6
Replace `caltype` with `use_leap_years` (#42)
blimlim Jun 19, 2025
ce970cd
ESM1.6: Write current year to restart (#46)
blimlim Jun 19, 2025
0bd0131
Fail on non midnight restarts (#47)
anton-seaice Jun 20, 2025
381f5b4
Use ifort for preprocessor directives (#52)
anton-seaice Jul 3, 2025
fe901d6
ESM1.6 Read start date and time from restart file (#48)
blimlim Jul 3, 2025
3ce7ce8
Set aicenmin consistent with UM7.3 (#54)
anton-seaice Jul 4, 2025
e8720da
Mask iceberg flux (#55)
blimlim Jul 15, 2025
831e2eb
Merge netcdf code from master branch (#57)
anton-seaice Jul 22, 2025
c3437aa
ESM1.6: Abort on failed namelist open (#62)
blimlim Jul 29, 2025
bce3629
Support multiple history timesteps per file (#59)
anton-seaice Aug 7, 2025
16e26c8
Move aicenmin to namelist (#64)
anton-seaice Sep 25, 2025
985d994
Merge remote-tracking branch 'origin/access-esm1.6' into master-esm1.…
anton-seaice Oct 29, 2025
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
15 changes: 15 additions & 0 deletions .github/workflows/model-build-test-ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
name: Test model build

on:
workflow_dispatch:
pull_request:
push:
branches:
- "master"

jobs:
build:
name: Build ${{ github.repository }} via spack
uses: access-nri/build-ci/.github/workflows/model-1-build.yml@main
permissions:
packages: read
3 changes: 0 additions & 3 deletions .gitmodules

This file was deleted.

Binary file added LICENSE.pdf
Binary file not shown.
1 change: 0 additions & 1 deletion ParallelIO
Submodule ParallelIO deleted from 7e242f
8 changes: 6 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,10 +1,14 @@
## Overview
This repository contains the trunk from the subversion (svn) repository of the Los Alamos Sea Ice Model, CICE, including release tags through version 5.1.2.
This repository contains the access/auscom fork of cice5 used in the ACCESS-ESM1.6 and ACCESS-OM2. It was forked from https://github.com/CICE-Consortium/CICE-svn-trunk/ which in turn captured the trunk from the subversion (svn) repository of the Los Alamos Sea Ice Model, CICE, including release tags through version 5.1.2.

ACCESS-ESM1.6 related code came from https://code.metoffice.gov.uk/trac/cice/browser/main/branches/pkg/Config/vn5.1.2_GSI8.1_package_branch/cice?order=name&rev=334#source (MOSRS account required)

More recent versions are found in the [CICE](https://github.com/CICE-Consortium/CICE) and [Icepack](https://github.com/CICE-Consortium/Icepack) repositories, which are maintained by the CICE Consortium.

If you expect to make any changes to the code, we recommend that you work in the CICE and Icepack repositories. Changes made to code in this repository will not be accepted, other than critical bug fixes.

There is [PDF documentation](https://github.com/ACCESS-NRI/cice5/blob/master/doc/cicedoc.pdf) available for CICE 5.1.2, however some changes were made to this fork to support coupling with ACCESS-OM2 and ACCESS-ESM1.6, Parallel IO, ERA5 Forcing, BGC modelling and for other updates. Some of these changes are described in the [ACCESS-OM2 Technical Report](https://github.com/COSIMA/ACCESS-OM2-1-025-010deg-report).

## Useful links
* **Wiki**: https://github.com/CICE-Consortium/CICE-svn-trunk/wiki

Expand All @@ -16,4 +20,4 @@ If you expect to make any changes to the code, we recommend that you work in the

* **Resource Index**: https://github.com/CICE-Consortium/About-Us/wiki/Resource-Index

List of resources for information about the Consortium and its repositories as well as model documentation, testing, and development.
List of resources for information about the Consortium and its repositories as well as model documentation, testing, and development.
2 changes: 1 addition & 1 deletion bld/Macros.Linux.raijin-185
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ FC := mpifort
ifeq ($(DEBUG), yes)
FFLAGS := -r8 -i4 -O0 -g -align all -w -ftz -convert big_endian -assume byterecl -no-vec -mcmodel=medium -xHost -fp-model precise
else
FFLAGS := -r8 -i4 -O2 -align all -w -ftz -convert big_endian -assume byterecl -no-vec -mcmodel=medium -xHost -fp-model precise
FFLAGS := -r8 -i4 -O2 -align all -w -ftz -convert big_endian -assume byterecl -no-vec -mcmodel=medium -xHost -fp-model precise -assume buffered_io -check noarg_temp_created
endif
MOD_SUFFIX := mod
LD := $(FC)
Expand Down
4 changes: 2 additions & 2 deletions bld/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -113,11 +113,11 @@ $(EXEC): $(OBJS)
cc $(CFLAGS) $(CPPDEFS) $(INCS) $(INCLDIR) $<

.F.o:
$(CPP) $(CPPFLAGS) $(CPPDEFS) $(INCS) $(INCLDIR) $< > $*.f
$(FC) -P $(CPPFLAGS) $(CPPDEFS) $(INCS) $(INCLDIR) $< -o $*.f
$(FC) -c $(FFLAGS) $(FIXEDFLAGS) $(INCS) $(INCLDIR) $*.f

.F90.o:
$(CPP) $(CPPFLAGS) $(CPPDEFS) $(INCS) $(INCLDIR) $< > $*.f90
$(FC) -P $(CPPFLAGS) $(CPPDEFS) $(INCS) $(INCLDIR) $< -o $*.f90
$(FC) -c $(FFLAGS) $(FREEFLAGS) $(INCS) $(INCLDIR) $*.f90

mostlyclean:
Expand Down
4 changes: 2 additions & 2 deletions bld/Makefile.std
Original file line number Diff line number Diff line change
Expand Up @@ -113,11 +113,11 @@ $(EXEC): $(OBJS)
cc $(CFLAGS) $(CPPDEFS) $(INCS) $(INCLDIR) $<

.F.o:
$(CPP) $(CPPFLAGS) $(CPPDEFS) $(INCS) $(INCLDIR) $< > $*.f
$(FC) -P $(CPPFLAGS) $(CPPDEFS) $(INCS) $(INCLDIR) $< -o $*.f
$(FC) -c $(FFLAGS) $(FIXEDFLAGS) $(INCS) $(INCLDIR) $*.f

.F90.o:
$(CPP) $(CPPFLAGS) $(CPPDEFS) $(INCS) $(INCLDIR) $< > $*.f90
$(FC) -P $(CPPFLAGS) $(CPPDEFS) $(INCS) $(INCLDIR) $< -o $*.f90
$(FC) -c $(FFLAGS) $(FREEFLAGS) $(INCS) $(INCLDIR) $*.f90

mostlyclean:
Expand Down
15 changes: 4 additions & 11 deletions bld/build.sh
Original file line number Diff line number Diff line change
Expand Up @@ -78,17 +78,10 @@ if ( $AusCOM == 'yes' ) then
setenv CPL_INCS '-I$(CPLINCDIR)/include -I$(OASISDIR)/psmile.MPI1 -I$(OASISDIR)/mct -I$(SRCDIR)/ParallelIO/build/include/'
endif

### Setup the version string, this is the git hash of the commit used to build
### the code. The version of an executable can be found with the following
### command: strings <executable> | grep 'CICE_COMMIT_HASH='
setenv GIT_CONFIG_NOGLOBAL 'yes'

set old_hash=`grep 'public :: CICE_COMMIT_HASH =' $SRCDIR/drivers/$driver/version.F90 | cut -d '"' -f 2 | cut -d '=' -f 2`
set new_hash=`git rev-parse HEAD`

if ( $old_hash != $new_hash ) then
sed -e "s/{CICE_COMMIT_HASH}/$new_hash/g" $SRCDIR/drivers/$driver/version.F90.template > $SRCDIR/drivers/$driver/version.F90
endif
### The version of an executable can be found with the following
### command: strings <executable> | grep 'CICE_VERSION='
set version='202301'
sed -e "s/{CICE_VERSION}/$version/g" $SRCDIR/drivers/$driver/version.F90.template > $SRCDIR/drivers/$driver/version_mod.F90

### Location and name of the generated exectuable
setenv EXE cice_${driver}_${resolution}_${NTASK}p.exe
Expand Down
2 changes: 1 addition & 1 deletion bld/makdep.c
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ static struct node *suffix_list; /* List of Fortran suffixes to look for */
static void check (char *, struct node *, char *, int);
static int already_found (char *, struct node *);

main (int argc, char **argv)
int main (int argc, char **argv)
{
int lastdot; /* points to the last . in fname */
int c; /* return from getopt */
Expand Down
238 changes: 238 additions & 0 deletions compile/comp_access-cm1440-185_ac330
Original file line number Diff line number Diff line change
@@ -0,0 +1,238 @@
#! /bin/csh -f

set echo on
#setenv DEBUG yes # set to yes for debug

if ( $1 == '') then
echo '*** Please issue the command like ***'
echo ' > ./comp_auscom_cice.RJ.nP #nproc '
echo 'here #proc is the number of cpu to be used for CICE5 (e.g. 1, 2, 4, 6...)'
set nproc = 192
echo *** $nproc processors will be used to run CICE5... ***
sleep 3
#exit
else
set nproc = $1
echo *** $nproc processors will be used to run CICE5... ***
endif

### Change these to your own site and user directory!
### You will need to create a Makefile Macro in bld
### Platform and its architecture ($HOST = xe)
setenv ARCH raijin-185

# Set AusCOM home:
setenv AusCOMHOME $cwd:h:h:h

#----------------------------------------------------------------------

### Specialty code
setenv CAM_ICE no # set to yes for CAM runs (single column)
setenv SHRDIR csm_share # location of CCSM shared code
setenv IO_TYPE netcdf # set to none if netcdf library is unavailable
# set to pio for parallel netcdf
setenv DITTO no # reproducible diagnostics
setenv THRD no # set to yes for OpenMP threading
if ( $THRD == 'yes') setenv OMP_NUM_THREADS 2 # positive integer

setenv ACCESS yes # set to yes for ACCESS
setenv AusCOM yes # set to yes for AusCOM
setenv OASIS3_MCT yes # oasis3-mct version
setenv CHAN MPI1 # MPI1 or MPI2 (always MPI1!)
setenv NICELYR 4 # number of vertical layers in the ice
setenv NSNWLYR 1 # number of vertical layers in the snow
setenv NICECAT 5 # number of ice thickness categories

### Location of ACCESS system
setenv SYSTEMDIR $AusCOMHOME
echo SYSTEMDIR: $SYSTEMDIR

### Location of this model (source)
setenv SRCDIR $cwd:h #$SYSTEMDIR/submodels/cice5.0.4
echo SRCDIR: $SRCDIR

source ${SRCDIR}/compile/environs.$ARCH # environment variables and loadable modules

### Location and names of coupling libraries and inclusions
### Location and names of coupling libraries
#setenv CPLLIBDIR ~access/access-cm2/prebuild/oasis3-mct/Linux-182/lib
setenv CPLLIBDIR /projects/access/apps/oasis3-mct/ompi185/lib
setenv CPLLIBS '-L$(CPLLIBDIR) -lpsmile.${CHAN} -lmct -lmpeu -lscrip'
#echo CPLLIBS: ${CPLLIBS}

### Location of coupling inclusions
#setenv CPLINCDIR ~access/access-cm2/prebuild/oasis3-mct/Linux-182/build/lib
setenv CPLINCDIR /projects/access/apps/oasis3-mct/ompi185/include
setenv CPL_INCS '-I$(CPLINCDIR)/psmile.$(CHAN) -I$(CPLINCDIR)/pio -I$(CPLINCDIR)/mct'
#echo CPL_INCS: $CPL_INCS

### For multi-Layer ice (standard) configuration
setenv N_ILYR 1 # 4 for standard multi-layer ice. for ktherm=0, zero-layer thermodynamics

### Location and name of the generated exectuable
setenv DATESTR `date +%Y%m%d`
setenv BINDIR $SYSTEMDIR/bin
setenv EXE cice_GC3GA7-cm1440-185.${DATESTR}_${nproc}p_${NICELYR}lyr

### Where this model is compiled
setenv OBJDIR $SRCDIR/compile/build_${CHAN}_{$nproc}p-mct-185
if !(-d $OBJDIR) mkdir -p $OBJDIR
#/bin/rm $OBJDIR/*
#

### Grid resolution
#setenv GRID gx3 ; setenv RES 100x116
#setenv GRID gx1 ; setenv RES 320x384
#setenv GRID tx1 ; setenv RES 360x240
#setenv GRID tp1 ; setenv RES 360x300
setenv GRID tp1 ; setenv RES 1440x1080

set NXGLOB = `echo $RES | sed s/x.\*//`
set NYGLOB = `echo $RES | sed s/.\*x//`
echo NXGLOB: $NXGLOB
echo NYGLOB: $NYGLOB

# Recommendations:
# NTASK equals nprocs in ice_in
# use processor_shape = slenderX1 or slenderX2 in ice_in
# one per processor with distribution_type='cartesian' or
# squarish blocks with distribution_type='rake'
# If BLCKX (BLCKY) does not divide NXGLOB (NYGLOB) evenly, padding
# will be used on the right (top) of the grid.
setenv NTASK $nproc
#setenv BLCKX 45 # x-dimension of blocks ( not including )
#setenv BLCKY 38 # y-dimension of blocks ( ghost cells )
setenv BLCKX `expr $NXGLOB / $nproc`
setenv BLCKY `expr $NYGLOB`
echo BLCKX: $BLCKX
echo BLCKY: $BLCKY

echo
#24 : 12x2
setenv BLCKX 120
setenv BLCKY 540
#144 : 16x9
setenv BLCKX 90
setenv BLCKY 120
#16 : 8x2
setenv BLCKX 180
setenv BLCKY 540
#16 : 4x4
setenv BLCKX 360
setenv BLCKY 270
##216 : 24x9
#setenv BLCKX 60
#setenv BLCKY 120
#192 : 16x12 -->square-ice
setenv BLCKX 90
setenv BLCKY 90
#192 : 96x2
setenv BLCKX 15
setenv BLCKY 540

# may need to increase MXBLCKS with rake distribution or padding
@ a = $NXGLOB * $NYGLOB ; @ b = $BLCKX * $BLCKY * $NTASK
@ m = $a / $b ; setenv MXBLCKS $m ; if ($MXBLCKS == 0) setenv MXBLCKS 1
echo Autimatically generated: MXBLCKS = $MXBLCKS
##setenv MXBLCKS 8 # if necessary (code will print proper value)
#20110830: increase it to 12 as required by code:
# (but no clue why it never happened before!)
#setenv MXBLCKS 12 # if necessary (code will print proper value)

###########################################
# ars599: 24032014
# copy from /short/p66/ars599/CICE.v5.0/accice.v504_csiro
# solo_ice_comp
###########################################
### Tracers # match ice_in tracer_nml to conserve memory
setenv TRAGE 1 # set to 1 for ice age tracer
setenv TRFY 0 # set to 1 for first-year ice area tracer
setenv TRLVL 0 # set to 1 for level and deformed ice tracers
setenv TRPND 1 # set to 1 for melt pond tracers
setenv NTRAERO 0 # number of aerosol tracers
# (up to max_aero in ice_domain_size.F90)
# CESM uses 3 aerosol tracers
setenv TRBRI 0 # set to 1 for brine height tracer
setenv NBGCLYR 0 # number of zbgc layers
setenv TRBGCS 0 # number of skeletal layer bgc tracers
# TRBGCS=0 or 2<=TRBGCS<=9)

### File unit numbers
setenv NUMIN 11 # minimum file unit number
setenv NUMAX 99 # maximum file unit number

if ($IO_TYPE == 'netcdf') then
setenv IODIR io_netcdf
else if ($IO_TYPE == 'pio') then
setenv IODIR io_pio
else
setenv IODIR io_binary
endif

###########################################

setenv CBLD $SRCDIR/bld

if ( $ARCH == 'UNICOS/mp') setenv ARCH UNICOS
if ( $ARCH == 'UNICOS') then
cp -f $CBLD/Makefile.$ARCH $CBLD/Makefile
else
cp -f $CBLD/Makefile.std $CBLD/Makefile
endif

if ($NTASK == 1) then
setenv COMMDIR serial
else
setenv COMMDIR mpi
endif
echo COMMDIR: $COMMDIR

if ($ACCESS == 'yes') then
setenv DRVDIR access
else
setenv DRVDIR cice
endif
echo DRVDIR: $DRVDIR

cd $OBJDIR

### List of source code directories (in order of importance).
cat >! Filepath << EOF
$SRCDIR/drivers/$DRVDIR
$SRCDIR/source
$SRCDIR/$COMMDIR
$SRCDIR/$IODIR
$SRCDIR/$SHRDIR
EOF

if ( $ARCH == 'UNICOS.ORNL.phoenix' ) then
### use -h command for phoenix
cc -o makdep -h command $CBLD/makdep.c || exit 2
else if ( $ARCH == 'Linux.ORNL.jaguar' ) then
gcc -g -o makdep $CBLD/makdep.c || exit 2
else
cc -o makdep $CBLD/makdep.c || exit 2
endif

setenv MACFILE $CBLD/Macros.Linux.${ARCH}

gmake VPFILE=Filepath EXEC=$BINDIR/$EXE \
NXGLOB=$NXGLOB NYGLOB=$NYGLOB \
BLCKX=$BLCKX BLCKY=$BLCKY MXBLCKS=$MXBLCKS \
-f $CBLD/Makefile MACFILE=$MACFILE || exit 2

cd ..
pwd
echo NTASK = $NTASK
echo "global N, block_size"
echo "x $NXGLOB, $BLCKX"
echo "y $NYGLOB, $BLCKY"
echo max_blocks = $MXBLCKS
echo $TRAGE = TRAGE, iage tracer
echo $TRFY = TRFY, first-year ice tracer
echo $TRLVL = TRLVL, level-ice tracers
echo $TRPND = TRPND, melt pond tracers
echo $NTRAERO = NTRAERO, number of aerosol tracers
echo $TRBRI = TRBRI, brine height tracer
echo $NBGCLYR = NBGCLYR, number of bio grid layers
echo $TRBGCS = TRBGCS, number of BGC tracers
Loading