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

NOAA machine pass of base_suite #155 #372

Merged
merged 99 commits into from
May 15, 2020
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
Show all changes
99 commits
Select commit Hold shift + click to select a range
3f7753b
update to include a 'high_Sierra' machine with gnu compilers,
rgrumbine Apr 23, 2018
13ea87d
Merge remote-tracking branch 'upstream/master'
rgrumbine Oct 4, 2018
9fe8b2b
Syncing theia and upstream/master branch
rgrumbine Oct 5, 2018
e9e0818
theia execution
rgrumbine Oct 5, 2018
a9cbb03
intel compiler version tests -- 15.0.0 or greater
rgrumbine Oct 5, 2018
47b4cdd
Merge remote-tracking branch 'upstream/master'
rgrumbine Oct 12, 2018
1519154
working on variations for round robin test
rgrumbine Dec 18, 2018
9f237f1
Merge branch 'master' of https://github.com/CICE-Consortium/CICE
rgrumbine Mar 1, 2019
363bcac
syncing to main
rgrumbine Mar 1, 2019
883b0bd
sync
rgrumbine Mar 1, 2019
327a0bd
Merge branch 'master' of https://github.com/CICE-Consortium/CICE
rgrumbine Mar 26, 2019
56940e9
testing
rgrumbine Apr 30, 2019
3626ad5
end test
rgrumbine Apr 30, 2019
c97f570
successful on phase2 for all regression tests
rgrumbine Apr 30, 2019
c0c9916
start on phase3 execution
rgrumbine Apr 30, 2019
62b2d2f
add phase3 system
rgrumbine Apr 30, 2019
c7991a7
syncing and phase3 modules
rgrumbine Apr 30, 2019
54d93d2
Merge pull request #1 from rgrumbine/fb_phase3
rgrumbine Apr 30, 2019
6ab17be
Merge pull request #2 from rgrumbine/develop
rgrumbine Apr 30, 2019
f606b22
update configs manually from master
rgrumbine May 1, 2019
9bbcd09
Merge branch 'fb_phase3' into develop
rgrumbine May 1, 2019
8834eba
env edit
rgrumbine May 2, 2019
7305a29
builds on phase3 now
rgrumbine May 13, 2019
2703c61
test
rgrumbine May 24, 2019
90732eb
Merge branch 'master' of https://github.com/CICE-Consortium/CICE into…
rgrumbine May 24, 2019
f843af7
trying to pull/merge cice master
rgrumbine May 24, 2019
64081e7
theia
rgrumbine May 24, 2019
b18984b
Merge branch 'master' of https://github.com/CICE-Consortium/CICE
rgrumbine May 24, 2019
e95c565
Merge branch 'master' into develop
rgrumbine May 24, 2019
97179e1
successful theia build
rgrumbine May 24, 2019
40d5429
Merge pull request #4 from rgrumbine/fb_theia
rgrumbine May 24, 2019
a4b87b2
merging in theia, phase3
rgrumbine May 24, 2019
70accea
garbage
rgrumbine May 24, 2019
f859b24
update theia intel env
rgrumbine May 28, 2019
40d1cf0
mods for running in NOAA
rgrumbine May 31, 2019
7fd0551
Merge branch 'master' of https://github.com/cice-consortium/cice into…
rgrumbine May 31, 2019
edbef30
Merge branch 'master' of https://github.com/cice-consortium/cice into…
rgrumbine May 31, 2019
1799157
Merge pull request #1 from CICE-Consortium/master
rgrumbine Jul 11, 2019
e15fcd3
start towards hera
rgrumbine Aug 30, 2019
a8b2667
tmp
rgrumbine Aug 30, 2019
4514ff8
Merge branch 'fb_mac' of github.com:rgrumbine/CICE into fb_mac
rgrumbine Aug 30, 2019
4970900
theia passes with most recent of all modules
rgrumbine Aug 30, 2019
96ffc20
moving to hera
rgrumbine Sep 18, 2019
9edfb37
Merge branch 'fb_mac' of github.com:rgrumbine/CICE into fb_mac
rgrumbine Sep 18, 2019
7106839
clean regression run on hera
rgrumbine Sep 19, 2019
76ee7b7
Merge branch 'develop' of github.com:rgrumbine/CICE into develop
rgrumbine Sep 19, 2019
011bdf7
cleanup
rgrumbine Sep 20, 2019
ffe9272
phase3 work
rgrumbine Oct 10, 2019
62d4854
Merge branch 'master' of github.com:rgrumbine/CICE
rgrumbine Oct 10, 2019
571a6e4
minor manual move towards master copy
rgrumbine Oct 10, 2019
6d3370e
Merge pull request #2 from rgrumbine/fb_mac
rgrumbine Oct 10, 2019
088dc11
re-fix phase3 script
rgrumbine Oct 10, 2019
1074eea
Merge branch 'develop' of github.com:rgrumbine/CICE into develop
rgrumbine Oct 11, 2019
6727489
nearing full phase3
rgrumbine Oct 18, 2019
3e27ea1
update path for data
rgrumbine Oct 18, 2019
69c06d0
Merge pull request #3 from rgrumbine/fb_mac
rgrumbine Oct 19, 2019
536b50c
actual final version of phase3
rgrumbine Oct 19, 2019
35475a7
Merge branch 'fb_mac' of https://github.com/rgrumbine/CICE into fb_mac
rgrumbine Oct 19, 2019
f732e83
Merge pull request #4 from rgrumbine/fb_mac
rgrumbine Oct 19, 2019
6141edc
from master
rgrumbine Oct 19, 2019
e65e65b
Merge pull request #6 from rgrumbine/gamma
rgrumbine Oct 19, 2019
bfd04dc
cicecore updating from master
rgrumbine Oct 19, 2019
a2fcc64
Merge pull request #7 from rgrumbine/gamma
rgrumbine Oct 19, 2019
23bb58b
Merge branch 'develop'
rgrumbine Oct 19, 2019
3c70820
from consortium/master
rgrumbine Oct 19, 2019
154d40b
Merge pull request #8 from rgrumbine/gamma
rgrumbine Oct 19, 2019
8b3a2bb
Merge branch 'gamma' into develop
rgrumbine Oct 19, 2019
25805dd
Merge branch 'develop' of github.com:rgrumbine/CICE into develop
rgrumbine Oct 19, 2019
4d7b31f
Merge branch 'develop'
rgrumbine Oct 19, 2019
e30ace6
more from master
rgrumbine Oct 19, 2019
96a1df0
Merge branch 'gamma' into develop
rgrumbine Oct 19, 2019
add09ac
Merge branch 'develop'
rgrumbine Oct 19, 2019
3da094d
retry sync
rgrumbine Oct 19, 2019
8a9ab74
Merge branch 'develop'
rgrumbine Oct 19, 2019
0c774e9
Merge branch 'master' of https://github.com/CICE-Consortium/CICE into…
rgrumbine Oct 19, 2019
f5164da
Merge branch 'CICE-Consortium-master' into gamma
rgrumbine Oct 19, 2019
95444b3
Merge pull request #10 from rgrumbine/gamma
rgrumbine Oct 19, 2019
bca7a84
Merge branch 'master' into develop
rgrumbine Oct 19, 2019
254ffb5
Merge pull request #11 from rgrumbine/develop
rgrumbine Oct 19, 2019
9b5ff3c
manual add/subtrace
rgrumbine Oct 19, 2019
07d4a1d
script perms and large diff files
rgrumbine Oct 19, 2019
68615cd
retrieve hera
rgrumbine Oct 19, 2019
74659f2
docs and cicecore sync to master
rgrumbine Oct 19, 2019
97d6625
machine syncing
rgrumbine Oct 19, 2019
a6b5c9c
couple more
rgrumbine Oct 19, 2019
4083514
some more
rgrumbine Oct 19, 2019
239f03a
Merge pull request #12 from rgrumbine/develop
rgrumbine Oct 19, 2019
322d839
finally the right template
rgrumbine Oct 19, 2019
759a524
finally correct template
rgrumbine Oct 19, 2019
bcb90ef
typography in master
rgrumbine Oct 20, 2019
d2b0e1c
Merge pull request #13 from rgrumbine/develop
rgrumbine Oct 20, 2019
f3540e1
restore working batch.csh
rgrumbine Oct 21, 2019
ac3138c
Merge branch 'develop'
rgrumbine Oct 21, 2019
b68acf4
towards matching consortium master
rgrumbine Oct 21, 2019
432c29d
last? add for syncing
rgrumbine Oct 21, 2019
8e49026
Merge pull request #14 from rgrumbine/phase3_6.0.2.0
rgrumbine Oct 21, 2019
162946a
Revert icepack to 1.1.2
rgrumbine Oct 21, 2019
9cbc4d5
Merge branch 'master' of github.com:rgrumbine/CICE
rgrumbine Oct 21, 2019
ce1e22a
Merge branch 'master' into master
apcraig Mar 12, 2020
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
141 changes: 106 additions & 35 deletions cice.setup
Original file line number Diff line number Diff line change
Expand Up @@ -377,7 +377,6 @@ else
exit -1
endif
cp -f ${ICE_SCRIPTS}/tests/report_results.csh ${tsdir}
cp -f ${ICE_SCRIPTS}/tests/timeseries.csh ${tsdir}
cp -f ${ICE_SCRIPTS}/tests/poll_queue.csh ${tsdir}

foreach file (${tsdir}/suite.run ${tsdir}/suite.submit)
Expand Down Expand Up @@ -433,6 +432,7 @@ if (${doabort} == true) then
exit -1
endif

# Create a new sets_base variable to store sets passed to cice.setup
set sets_base = "${sets}"
set bfbcomp_base = "$bfbcomp"
foreach compiler ( $ncompilers )
Expand All @@ -458,13 +458,14 @@ EOF
continue
endif

source ${ICE_SCRIPTS}/machines/env.${machcomp} -nomodules || exit 2

# Obtain the test name, sets, grid, and PE information from .ts file
set test = `echo $line | cut -d' ' -f1`
set grid = `echo $line | cut -d' ' -f2`
set pesx = `echo $line | cut -d' ' -f3`
set sets_tmp = `echo $line | cut -d' ' -f4`
set bfbcomp_tmp = `echo $line | cut -d' ' -f5`
# Create a new sets_base variable to store sets passed to cice.setup

# Append sets from .ts file to the $sets variable
set sets = "$sets_base,$sets_tmp"
Expand All @@ -482,6 +483,107 @@ EOF
set fbfbcomp = ${machcomp}_${bfbcomp}
endif

#------------------------------------------------------------
# Parse pesx with strict checking, limit pes for machine

set chck = `echo ${pesx} | sed 's/^[0-9][0-9]*x[0-9][0-9]*x[0-9][0-9]*x[0-9][0-9]*x[0-9][0-9]*$/OK/'`
if (${chck} == OK) then
set task = `echo ${pesx} | cut -d x -f 1`
set thrd = `echo ${pesx} | cut -d x -f 2`
set blckx = `echo ${pesx} | cut -d x -f 3`
set blcky = `echo ${pesx} | cut -d x -f 4`
set mblck = `echo ${pesx} | cut -d x -f 5`
if (${task} == 0 || ${thrd} == 0 || ${blckx} == 0 || ${blcky} == 0 || ${mblck} == 0) then
echo "${0}: ERROR in -p argument, cannot have zeros"
exit -1
endif
else
set chck = `echo ${pesx} | sed 's/^[0-9][0-9]*x[0-9][0-9]*x[0-9][0-9]*x[0-9][0-9]*$/OK/'`
if (${chck} == OK) then
set task = `echo ${pesx} | cut -d x -f 1`
set thrd = `echo ${pesx} | cut -d x -f 2`
set blckx = `echo ${pesx} | cut -d x -f 3`
set blcky = `echo ${pesx} | cut -d x -f 4`
set mblck = 0
if (${task} == 0 || ${thrd} == 0 || ${blckx} == 0 || ${blcky} == 0) then
echo "${0}: ERROR in -p argument, cannot have zeros"
exit -1
endif
else
set chck = `echo ${pesx} | sed 's/^[0-9][0-9]*x[0-9][0-9]*$/OK/'`
if (${chck} == OK) then
set task = `echo ${pesx} | cut -d x -f 1`
set thrd = `echo ${pesx} | cut -d x -f 2`
set blckx = 0
set blcky = 0
set mblck = 0
if (${task} == 0 || ${thrd} == 0) then
echo "${0}: ERROR in -p argument, cannot have zeros"
exit -1
endif
else
set chck = `echo ${pesx} | sed 's/^[0-9][0-9]*$/OK/'`
if (${chck} == OK) then
set task = `echo ${pesx} | cut -d x -f 1`
set thrd = 1
set blckx = 0
set blcky = 0
set mblck = 0
if (${task} == 0) then
echo "${0}: ERROR in -p argument, cannot have zeros"
exit -1
endif
else
echo "${0}: ERROR in -p argument, ${pesx}, must be [m], [m]x[n], [m]x[n]x[bx]x[by], or [m]x[n]x[bx]x[by]x[mb] "
exit -1
endif
endif
endif
endif

@ blkreq = ${task} * ${mblck}
# check max threads, reduce threads, increase tasks
if ($?ICE_MACHINE_MAXTHREADS) then
if (${thrd} > ${ICE_MACHINE_MAXTHREADS}) then
@ pesreq = ${task} * ${thrd}
@ task = ${pesreq} / ${ICE_MACHINE_MAXTHREADS}
@ thrd = ${ICE_MACHINE_MAXTHREADS}
@ peschk = ${task} * ${thrd}
if (${pesreq} > ${peschk}) then
@ task = ${task} + 1
endif
# echo "tcx1 reset to $task $thrd $mblck"
endif
endif

# check max pes, reduce tasks
if ($?ICE_MACHINE_MAXPES) then
@ pesreq = ${task} * ${thrd}
if (${pesreq} > ${ICE_MACHINE_MAXPES}) then
@ task = ${ICE_MACHINE_MAXPES} / ${thrd}
# echo "tcx2 reset to $task $thrd $mblck"
endif
endif

# check max blocks and adjust as needed
if ($mblck > 0) then
@ mblck = ${blkreq} / ${task}
@ blkchk = ${task} * ${mblck}
if (${blkreq} > ${blkchk}) then
@ mblck = $mblck + 1
endif
# echo "tcx3 reset to $task $thrd $mblck"
endif

# update pesx based on use defined settings and machine limits to reflect actual value
set pesx = ${task}x${thrd}x${blckx}x${blcky}x${mblck}
if (${mblck} == 0) then
set pesx = ${task}x${thrd}x${blckx}x${blcky}
endif
if (${blckx} == 0 || ${blcky} == 0) then
set pesx = ${task}x${thrd}
endif

set testname_noid = ${spval}
# create case for test cases
if (${docase} == 0) then
Expand Down Expand Up @@ -533,7 +635,7 @@ EOF
endif

# from basic script dir to case
foreach file (cice.build cice.settings Makefile ice_in makdep.c setup_run_dirs.csh)
foreach file (cice.build cice.settings Makefile ice_in makdep.c setup_run_dirs.csh timeseries.csh timeseries.py)
if !(-e ${ICE_SCRIPTS}/$file) then
echo "${0}: ERROR, ${ICE_SCRIPTS}/$file not found"
exit -1
Expand All @@ -560,7 +662,6 @@ EOF
end

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

set quietmode = false
if ($?ICE_MACHINE_QUIETMODE) then
Expand All @@ -586,36 +687,6 @@ EOF
#------------------------------------------------------------
# Compute a default blocksize

set chck = `echo ${pesx} | sed 's/^[0-9][0-9]*x[0-9][0-9]*x[0-9][0-9]*x[0-9][0-9]*x[0-9][0-9]*$/OK/'`
if (${chck} == OK) then
set task = `echo ${pesx} | cut -d x -f 1`
set thrd = `echo ${pesx} | cut -d x -f 2`
set blckx = `echo ${pesx} | cut -d x -f 3`
set blcky = `echo ${pesx} | cut -d x -f 4`
set mblck = `echo ${pesx} | cut -d x -f 5`
else
set chck = `echo ${pesx} | sed 's/^[0-9][0-9]*x[0-9][0-9]*x[0-9][0-9]*x[0-9][0-9]*$/OK/'`
if (${chck} == OK) then
set task = `echo ${pesx} | cut -d x -f 1`
set thrd = `echo ${pesx} | cut -d x -f 2`
set blckx = `echo ${pesx} | cut -d x -f 3`
set blcky = `echo ${pesx} | cut -d x -f 4`
set mblck = 0
else
set chck = `echo ${pesx} | sed 's/^[0-9][0-9]*x[0-9][0-9]*$/OK/'`
if (${chck} == OK) then
set task = `echo ${pesx} | cut -d x -f 1`
set thrd = `echo ${pesx} | cut -d x -f 2`
set blckx = 0
set blcky = 0
set mblck = 0
else
echo "${0}: ERROR in -p argument, ${pesx}, must be [m]x[n], [m]x[n]x[bx]x[by], or [m]x[n]x[bx]x[by]x[mb] "
exit -1
endif
endif
endif

setenv ICE_DECOMP_GRID ${grid}
setenv ICE_DECOMP_NTASK ${task}
setenv ICE_DECOMP_NTHRD ${thrd}
Expand Down Expand Up @@ -847,7 +918,7 @@ 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}
./cice.build --exe \${ciceexe}
if !(-e \${ciceexe}) cp -p \${ICE_RUNDIR}/cice \${ciceexe}
EOF
end
Expand Down
6 changes: 3 additions & 3 deletions doc/source/conf.py
Original file line number Diff line number Diff line change
Expand Up @@ -54,17 +54,17 @@

# General information about the project.
project = u'CICE'
copyright = u'2018, Triad National Security, LLC (code) and National Center for Atmospheric Research (documentation)'
copyright = u'2019, Triad National Security, LLC (code) and National Center for Atmospheric Research (documentation)'
author = u'CICE-Consortium'

# The version info for the project you're documenting, acts as replacement for
# |version| and |release|, also used in various other places throughout the
# built documents.
#
# The short X.Y version.
version = u'6.0.0'
version = u'6.0.2'
# The full version, including alpha/beta/rc tags.
version = u'6.0.0'
version = u'6.0.2'

# The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages.
Expand Down
11 changes: 11 additions & 0 deletions doc/source/developer_guide/dg_about.rst
Original file line number Diff line number Diff line change
Expand Up @@ -16,3 +16,14 @@ Guiding principles for the creation of CICE include the following:
on individual gridcells, and contain no underlying infrastructure. CICE must call
into Icepack using interfaces and approaches specified by Icepack.


Git workflow and Pull Requests
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

There is extensive Information for Developers documentation available.
See https://github.com/CICE-Consortium/About-Us/wiki/Resource-Index#information-for-developers
for information on:
- Contributing to model development
- Software development practices guide
- git Workflow Guide - including extensive information about the Pull Request process and requirements
- Documentation Workflow Guide
14 changes: 12 additions & 2 deletions doc/source/developer_guide/dg_dynamics.rst
Original file line number Diff line number Diff line change
Expand Up @@ -37,8 +37,18 @@ The dynamics solvers are found in **cicecore/cicedynB/dynamics/**. A couple of
available including EVP, revised EVP, and EAP. The dynamics solver is specified in namelist with the
``kdyn`` variable. ``kdyn=1`` is evp, ``kdyn=2`` is eap, and revised evp requires the ``revised_evp``
namelist flag be set to true.
A vectorized version of EVP is available through the namelist flag ``evp_kernel_ver``. Default is "normal"
EVP as usual ``evp_kernel_ver=0``, whereas an vectorized version (ver.2) is available ``evp_kernel_ver=2``.

Multiple evp solvers are supported thru the namelist flag ``kevp_kernel``. The standard implementation
and current default is ``kevp_kernel=0``. In this case, the stress is solved on the regular decomposition
via subcycling and calls to subroutine stress and subroutine stepu with MPI global sums required in each
subcycling call. With ``kevp_kernel=2``, the data required to compute the stress is gathered to the root
MPI process and the stress calculation is performed on the root task without any MPI global sums. OpenMP
parallelism is supported in ``kevp_kernel=2``. The solutions with ``kevp_kernel`` set to 0 or 2 will
not be bit-for-bit
identical but should be the same to roundoff and produce the same climate. ``kevp_kernel=2`` may perform
better for some configurations, some machines, and some pe counts. ``kevp_kernel=2`` is not supported
with the tripole grid and is still being validated. Until ``kevp_kernel=2`` is fully validated, it will
abort if set. To override the abort, use value 102 for testing.


Transport
Expand Down
64 changes: 32 additions & 32 deletions doc/source/developer_guide/dg_other.rst
Original file line number Diff line number Diff line change
Expand Up @@ -160,57 +160,57 @@ Additional information about tracers can be found in the
To add a tracer, follow these steps using one of the existing tracers as
a pattern.

#. **icepack\_tracers.F90** and **icepack\_[tracer].F90**: declare tracers,
add flags and indices, and create physics routines as described in the
`Icepack documentation <https://cice-consortium-icepack.readthedocs.io/en/master/developer_guide/dg_adding_tracers.html>`_
1) **icepack\_tracers.F90** and **icepack\_[tracer].F90**: declare tracers,
add flags and indices, and create physics routines as described in the
`Icepack documentation <https://cice-consortium-icepack.readthedocs.io/en/master/developer_guide/dg_adding_tracers.html>`_

#. **ice_arrays_column.F90**: declare arrays
2) **ice_arrays_column.F90**: declare arrays

#. **ice_init_column.F90**: initialize arrays
3) **ice_init_column.F90**: initialize arrays

#. **ice\_init.F90**: (some of this may be done in **icepack\_[tracer].F90**
instead)
4) **ice\_init.F90**: (some of this may be done in **icepack\_[tracer].F90**
instead)

- declare ``tr_[tracer]`` and ``nt_[tracer]`` as needed
- declare ``tr_[tracer]`` and ``nt_[tracer]`` as needed

- add logical namelist variables ``tr_[tracer]``, ``restart_[tracer]``
- add logical namelist variables ``tr_[tracer]``, ``restart_[tracer]``

- initialize and broadcast namelist variables
- initialize and broadcast namelist variables

- check for potential conflicts, aborting if any occur
- check for potential conflicts, aborting if any occur

- print namelist variables to diagnostic output file
- print namelist variables to diagnostic output file

- initialize tracer flags etc in icepack (call *icepack_init_tracer_flags* etc)
- initialize tracer flags etc in icepack (call *icepack_init_tracer_flags* etc)

- increment number of tracers in use based on namelist input (``ntrcr``)
- increment number of tracers in use based on namelist input (``ntrcr``)

- define tracer dependencies
- define tracer dependencies

#. **CICE\_InitMod.F90**: initialize tracer (includes reading restart file)
5) **CICE\_InitMod.F90**: initialize tracer (includes reading restart file)

#. **CICE\_RunMod.F90**, **ice\_step\_mod.F90** (and elsewhere as needed):
6) **CICE\_RunMod.F90**, **ice\_step\_mod.F90** (and elsewhere as needed):

- call routine to write tracer restart data
- call routine to write tracer restart data

- call Icepack or other routines to update tracer value
(often called from **ice\_step\_mod.F90**)
- call Icepack or other routines to update tracer value
(often called from **ice\_step\_mod.F90**)

#. **ice\_restart.F90**: define restart variables (for binary, netCDF and PIO)
7) **ice\_restart.F90**: define restart variables (for binary, netCDF and PIO)

#. **ice\_restart\_column.F90**: create routines to read, write tracer restart data
8) **ice\_restart\_column.F90**: create routines to read, write tracer restart data

#. **ice\_fileunits.F90**: add new dump and restart file units
9) **ice\_fileunits.F90**: add new dump and restart file units

#. **ice\_history\_[tracer].F90**: add history variables
(Section :ref:`addhist`)
10) **ice\_history\_[tracer].F90**: add history variables
(Section :ref:`addhist`)

#. **ice\_in**: add namelist variables to *tracer\_nml* and
*icefields\_nml*. Best practice is to set the namelist values so that the
new capability is turned off, and create an option file with your preferred
configuration in **configuration/scripts/options**.
11) **ice\_in**: add namelist variables to *tracer\_nml* and
*icefields\_nml*. Best practice is to set the namelist values so that the
new capability is turned off, and create an option file with your preferred
configuration in **configuration/scripts/options**.

#. If strict conservation is necessary, add diagnostics as noted for
topo ponds in the `Icepack documentation <https://cice-consortium-icepack.readthedocs.io/en/master/science_guide/index.html>`_.
12) If strict conservation is necessary, add diagnostics as noted for
topo ponds in the `Icepack documentation <https://cice-consortium-icepack.readthedocs.io/en/master/science_guide/index.html>`_.

#. Update documentation, including **cice_index.rst** and **ug_case_settings.rst**
13) Update documentation, including **cice_index.rst** and **ug_case_settings.rst**
26 changes: 23 additions & 3 deletions doc/source/developer_guide/dg_scripts.rst
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,8 @@ The directory structure under configure/scripts is as follows.
| **parse_settings.sh** replaces settings with command-line configuration
| **setup_run_dirs.csh** creates the case run directories
| **set_version_number.csh** updates the model version number from the **cice.setup** command line
| **timeseries.csh** generates PNG timeseries plots from output files, using GNUPLOT
| **timeseries.py** generates PNG timeseries plots from output files, using Python
| **tests/** scripts for configuring and running basic tests

.. _dev_strategy:
Expand Down Expand Up @@ -78,6 +80,25 @@ with appropriate names and syntax. The set_nml file syntax is the same as namel
syntax and the set_env files are consistent with csh setenv syntax. See other files for
examples of the syntax.

.. _build:

Build Scripts
--------------

CICE uses GNU Make to build the model. There is a common **Makefile** for all machines.
Each machine provides a Macros file to define some Makefile variables
and and an env file to specify the modules/software stack for each compiler.
The machine is built by the cice.build script which invokes Make.
There is a special trap for circular dependencies in the cice.build script to
highlight this error when it occurs.

The **cice.build** script has some additional features including the ability to
pass a Makefile target. This is documented in :ref:`cicebuild`. In addition, there
is a hidden feature in the **cice.build** script that allows for reuse of
executables. This is used by the test suites to significantly reduce cost of
building the model. It is invoked with the ``--exe`` argument to **cice.build**
and should not be invoked by users interactively.

.. _dev_machines:

Machines
Expand Down Expand Up @@ -122,9 +143,8 @@ setup the various tests, such as smoke and restart tests (**test_smoke.script**,
and the files that describe with options files are needed for each test (ie. **test_smoke.files**, **test_restart.files**).
A baseline test script (**baseline.script**) is also there to setup the general regression
and comparison testing. That directory also contains the preset test suites
(ie. **base_suite.ts**) and a file that supports post-processing on the model
output (**timeseries.csh**). There is also a script **report_results.csh** that pushes results
from test suites back to the CICE-Consortium test results wiki page.
(ie. **base_suite.ts**) and a script (**report_results.csh**) that pushes results from
test suites back to the CICE-Consortium test results wiki page.

To add a new test (for example newtest), several files may be needed,

Expand Down
Loading