-
Notifications
You must be signed in to change notification settings - Fork 0
/
comp_ice.backend
executable file
·200 lines (171 loc) · 8.24 KB
/
comp_ice.backend
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
#! /bin/csh -f
### Expect to find the following environment variables set on entry:
# SITE
# SYSTEM_USERDIR
# SRCDIR
# EXEDIR
### Grid resolution
#setenv RES col ; setenv GRID 5x5
#setenv RES gx3 ; setenv GRID 100x116
#setenv RES nx1 ; setenv GRID 360x200
#setenv RES gx1 ; setenv GRID 320x384
#setenv RES tx1 ; setenv GRID 360x240
#setenv RES mx5 ; setenv GRID 720x410
setenv RES nx1
echo "NEMS_GRID = $NEMS_GRID "
if ($?NEMS_GRID) then
if ($NEMS_GRID =~ *col*) setenv RES col
if ($NEMS_GRID =~ *gx3*) setenv RES gx3
if ($NEMS_GRID =~ *nx1*) setenv RES nx1
if ($NEMS_GRID =~ *gx1*) setenv RES gx1
if ($NEMS_GRID =~ *tx1*) setenv RES tx1
if ($NEMS_GRID =~ *mx5*) setenv RES mx5
endif
if ($RES == col) setenv GRID 5x5
if ($RES == gx3) setenv GRID 100x116
if ($RES == nx1) setenv GRID 360x200
if ($RES == gx1) setenv GRID 320x384
if ($RES == tx1) setenv GRID 360x240
if ($RES == mx5) setenv GRID 720x410
echo "tcx comp_ice.backend res grid $RES $GRID"
set NXGLOB = `echo $GRID | sed s/x.\*//`
set NYGLOB = `echo $GRID | sed s/.\*x//`
# 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.
if ($RES == 'col') then # for column configuration:
setenv NTASK 1 # total number of processors
setenv BLCKX 5 # x-dimension of blocks ( not including )
setenv BLCKY 5 # y-dimension of blocks ( ghost cells )
setenv NICELYR 7 # 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
endif
if ($RES == 'gx3') then # for column configuration:
setenv NTASK 4 # total number of processors
setenv BLCKX 50 # x-dimension of blocks ( not including )
setenv BLCKY 58 # y-dimension of blocks ( ghost cells )
setenv NICELYR 7 # 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
endif
if ($RES == 'nx1') then # for column configuration:
setenv NTASK 4 # total number of processors
setenv BLCKX 180 # x-dimension of blocks ( not including )
setenv BLCKY 100 # y-dimension of blocks ( ghost cells )
setenv NICELYR 7 # 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
endif
if ($RES == 'mx5') then # for column configuration:
setenv NTASK 20 # total number of processors
setenv BLCKX 72 # x-dimension of blocks ( not including )
setenv BLCKY 205 # y-dimension of blocks ( ghost cells )
setenv NICELYR 7 # 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
endif
# 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
#setenv MXBLCKS 37 # if necessary (code will print proper value)
### Tracers # match ice_in tracer_nml to conserve memory
setenv TRAGE 1 # set to 1 for ice age tracer
setenv TRFY 1 # set to 1 for first-year ice area tracer
setenv TRLVL 1 # 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 7 # number of zbgc layers
setenv TRBGCS 0 # number of skeletal layer bgc tracers
# TRBGCS=0 or 2<=TRBGCS<=9)
### Specialty code
setenv CAM_ICE no # set to yes for CAM runs (single column)
setenv SHRDIR csm_share # location of CCSM shared code
if !($?IO_TYPE) then
setenv IO_TYPE netcdf4 # set to none if netcdf library is unavailable
# setenv IO_TYPE netcdf3 # set to none if netcdf library is unavailable
# set to pio for parallel netcdf
endif
setenv DITTO no # reproducible diagnostics
setenv THRD no # set to yes for OpenMP threading
if ( $THRD == 'yes') setenv OMP_NUM_THREADS 2 # positive integer
### File unit numbers
setenv NUMIN 11 # minimum file unit number
setenv NUMAX 99 # maximum file unit number
if !(-d $EXEDIR) mkdir -p $EXEDIR
setenv CBLD $SRCDIR/bld
setenv OBJDIR $EXEDIR/compile ; if !(-d $OBJDIR) mkdir -p $OBJDIR
setenv RSTDIR $EXEDIR/restart ; if !(-d $RSTDIR) mkdir -p $RSTDIR
setenv HSTDIR $EXEDIR/history ; if !(-d $HSTDIR) mkdir -p $HSTDIR
setenv ARCH `uname -s`
if ( $ARCH == 'UNICOS/mp') setenv ARCH UNICOS
if ( $ARCH == 'UNICOS') then
cp -f $CBLD/Makefile.$ARCH $CBLD/Makefile
else if ( $ARCH == 'Darwin' ) then
cp -f $CBLD/Makefile.$ARCH $CBLD/Makefile
else
cp -f $CBLD/Makefile.std $CBLD/Makefile
endif
setenv ARCH $ARCH.$SITE
cd $SRCDIR/source
cd $EXEDIR
#if !($RES == 'col') then
#if !(-e grid) cp $SRCDIR/input_templates/$RES/global_$RES.grid grid
#if !(-e kmt) cp $SRCDIR/input_templates/$RES/global_$RES.kmt kmt
#endif
#if !(-e ice_in) cp $SRCDIR/input_templates/$RES/ice_in .
#if !(-e run_ice) cp $SRCDIR/input_templates/run_ice.$ARCH run_ice
cd $RSTDIR
#cp $SRCDIR/input_templates/$RES/iced_$RES* .
#if !(-e ice.restart_file) cp $SRCDIR/input_templates/$RES/ice.restart_file .
cd $OBJDIR
if ($NTASK == 1) then
setenv COMMDIR serial
else
setenv COMMDIR mpi
endif
setenv DRVDIR cice
if ($IO_TYPE == 'netcdf3' || $IO_TYPE == 'netcdf4') then
setenv IODIR io_netcdf
else if ($IO_TYPE == 'pio') then
setenv IODIR io_pio
else
setenv IODIR io_binary
endif
### List of source code directories (in order of importance).
cat >! Filepath << EOF
$SRCDIR/drivers/$DRVDIR
$SRCDIR/source
$SRCDIR/$COMMDIR
$SRCDIR/$IODIR
$SRCDIR/$SHRDIR
EOF
cc -o makdep $CBLD/makdep.c || exit 2
gmake VPFILE=Filepath EXEC=$EXEDIR/cice \
NXGLOB=$NXGLOB NYGLOB=$NYGLOB \
BLCKX=$BLCKX BLCKY=$BLCKY MXBLCKS=$MXBLCKS \
-f $CBLD/Makefile MACFILE=$CBLD/Macros.$ARCH
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
cd $EXEDIR/compile
ar -r $EXEDIR/liblanl_cice.a CICE_FinalMod.o CICE_InitMod.o CICE_RunMod.o ice_aerosol.o ice_age.o ice_algae.o ice_atmo.o ice_blocks.o ice_boundary.o ice_brine.o ice_broadcast.o ice_calendar.o ice_communicate.o ice_constants.o ice_diagnostics.o ice_distribution.o ice_domain.o ice_domain_size.o ice_dyn_eap.o ice_dyn_evp.o ice_dyn_shared.o ice_exit.o ice_fileunits.o ice_firstyear.o ice_flux.o ice_forcing.o ice_gather_scatter.o ice_global_reductions.o ice_grid.o ice_history.o ice_history_bgc.o ice_history_drag.o ice_history_mechred.o ice_history_pond.o ice_history_shared.o ice_history_write.o ice_init.o ice_itd.o ice_kinds_mod.o ice_lvl.o ice_mechred.o ice_meltpond_cesm.o ice_meltpond_lvl.o ice_meltpond_topo.o ice_ocean.o ice_orbital.o ice_read_write.o ice_restart.o ice_restart_driver.o ice_restart_shared.o ice_restoring.o ice_shortwave.o ice_spacecurve.o ice_state.o ice_step_mod.o ice_therm_0layer.o ice_therm_bl99.o ice_therm_itd.o ice_therm_mushy.o ice_therm_shared.o ice_therm_vertical.o ice_timers.o ice_transport_driver.o ice_transport_remap.o ice_zbgc.o ice_zbgc_shared.o shr_orb_mod.o