1 |
Seaice-only estimation in the Labrador Sea |
Seaice-only verification experiment in idealized periodic channel |
2 |
------------------------------------------ |
----------------------------------------------------------------- |
|
|
|
|
Notes: |
|
|
|
|
|
- The offline code is enabled during compilation with: |
|
|
ALLOW_BULK_OFFLINE in EXF_OPTIONS.h |
|
|
|
|
|
- At runtime turn off time-stepping in data PARM01 using: |
|
|
saltStepping = .FALSE., |
|
|
tempStepping = .FALSE., |
|
|
momStepping = .FALSE., |
|
|
|
|
|
- specify SST in data.exf using: |
|
|
climsstfile |
|
|
climsststartdate1 |
|
|
climsststartdate2 |
|
|
climsstperiod |
|
|
|
|
|
- and turn off surface relaxation to avoid biasing output diagnostics: |
|
|
climsstTauRelax = 0.0, |
|
|
|
|
|
============== |
|
|
|
|
|
09-Sep-2005 |
|
|
heimbach@mit.edu, ifenty@mit.edu, menemenlis@jpl.nasa.gov |
|
|
|
|
|
This is a 2x2 degree configuration of a seaice-only model |
|
|
in the Labrador Sea (Nx*Ny*Nz = 20*16*23). |
|
|
The seaice model is forced by monthly-mean atmospheric state. |
|
|
The lower boundary condition is SST, also provided as monthly-mean |
|
|
fields (rather than being computed by an ocean component). |
|
|
In its current form the seaice model is thermodynamic-only, i.e. |
|
|
#undef SEAICE_ALLOW_DYNAMICS |
|
|
The estimation problem consists of a least-squares fit of |
|
|
daily-mean modeled vs. observed seaice fractional area. |
|
|
Observations are from satellite-borne sounding microwave radiometers. |
|
|
|
|
|
The setup consists of 2 parts: |
|
|
1. the forward/adjoint model component which computes the gradient of |
|
|
the model vs. data mistif costfunction w.r.t. to the time-varying |
|
|
atmospheric state. |
|
|
2. the optimization/linesearch routine that uses the gradient information |
|
|
to provide an improved guess of the control vector. |
|
|
|
|
|
Instructions to configure: |
|
|
|
|
|
0. Preparation |
|
|
-------------- |
|
|
# from model base dir., e.g. MITgcm/ |
|
|
set basedir = `pwd` |
|
|
cd ${basedir}/verification/lab_sea/ |
|
|
mkdir exe |
|
|
mkdir exe/optim |
|
|
|
|
|
1. forward/adjoint model component |
|
|
---------------------------------- |
|
|
cd ${basedir}/verification/lab_sea/build/ |
|
|
../../../tools/genmake2 -mods ../code_ad_seaice_only |
|
|
make depend |
|
|
make adall |
|
|
|
|
|
2. optimization/linesearch routines |
|
|
----------------------------------- |
|
|
# This part needs more attention: |
|
|
# Compiler options in the Makefile are hard-coded, |
|
|
# make sure you choose the right ones for your platform |
|
|
# |
|
|
# Assume you are in model base dir., e.g. MITgcm/ |
|
|
# |
|
|
# A: lsopt |
|
|
# -------- |
|
|
cd ${basedir}/lsopt/ |
|
|
# edit Makefile to choose right compiler |
|
|
make |
|
|
# |
|
|
# B: optim |
|
|
# -------- |
|
|
cd ${basedir}/optim/ |
|
|
# Makefile in ${basedir}/optim/ needs 4 adjustments: |
|
|
# 1: -DMAX_INDEPEND=1000000 |
|
|
# make sure this number is >= number of control elements |
|
|
# 2: Make sure you've chosen the right compiler for your platform |
|
|
# 3: Make sure you've chosen the right INCLUDEDIRS for the header files, |
|
|
# in this case it is |
|
|
# -I../verification/lab_sea/build/ |
|
|
# 4: Make sure you've got the right set of BLAS libraries |
|
|
# some are provided in lsopt/ |
|
|
# See the README file in lsopt/ on how to get platform-optimized |
|
|
# BLAS libraries, and how to best install them. |
|
|
# If you're done with all these, just type |
|
|
make |
|
|
# |
|
|
# C: move executable and parameter files to executable directory |
|
|
# ------- |
|
|
cp optim.x ../verification/lab_sea/exe/optim/. |
|
|
cp ../lsopt/data.ecco ../lsopt/data.ctrl ../verification/lab_sea/exe/optim/. |
|
|
|
|
|
3. Run state estimation |
|
|
----------------------- |
|
|
cd ${basedir}/verification/lab_sea/exe/optim |
|
|
ln -s ../data.optim . |
|
|
cd ${basedir}/verification/lab_sea/exe |
|
|
ln -s ../build/mitgcmuv_ad . |
|
|
ln -s ../input_ad_seaice_only/* . |
|
|
ln -s ../input/*.labsea1979 . |
|
|
# |
|
|
./run_estim.csh & |
|
3 |
|
|
4 |
|
1) main forward experiment (code, input) |
5 |
|
|
6 |
|
Re-entrant zonally periodic channel (80x42 grid points) with just level (Nr=1) |
7 |
|
uniform resolution (5.km, 10m), solid Southern boundary with triangular shape |
8 |
|
coastline ("bathy_3c.bin") |
9 |
|
|
10 |
|
Use seaice (dynamics & thermodynamics from pkg/thsice) with EXF (see data.pkg) |
11 |
|
with initial ice thickness of 0.2 m (but no snow) |
12 |
|
(thSIceThick_InitFile='const+20.bin', in "input/data.ice") |
13 |
|
Initial seaice concentration is 100 % everywhere |
14 |
|
(thSIceFract_InitFile='const100.bin', in "input/data.ice") |
15 |
|
and seaice is initially at rest. |
16 |
|
|
17 |
|
At runtime turn off time-stepping in 'data', PARM01, using: |
18 |
|
momStepping = .FALSE., |
19 |
|
saltStepping = .FALSE., |
20 |
|
tempAdvection=.FALSE., |
21 |
|
And just keep surface temp relaxation (tauRelax = 1 month) toward fixed SST: |
22 |
|
in data.exf : |
23 |
|
> climsstperiod = 0.0, |
24 |
|
> climsstTauRelax = 2592000., |
25 |
|
> climsstfile = 'tocn.bin', |
26 |
|
|
27 |
|
Forcing: |
28 |
|
None of the forcing vary with time; Most of the input files have been |
29 |
|
generated using matlab script "input/gendata.m". |
30 |
|
SST relaxation field is uniform in X, parabolic function of Y with |
31 |
|
maximum close to Southern boundary. |
32 |
|
|
33 |
|
Atmospheric air temp is uniform in Y, and only vary with X (~sin(2.pi.x/Lx)) |
34 |
|
with an amplitude of 4.K ('tair_4x.bin'); |
35 |
|
Uses constant Relative Humidity (70%, file 'qa70_4x.bin') |
36 |
|
constant and uniform downward shortwave (100.W/m2, 'dsw_100.bin'), |
37 |
|
downward longwave (250.W/m^2, 'dlw_250.bin'), |
38 |
|
zonal wind (10.m/s, 'windx.bin'), |
39 |
|
no meridional wind, no precip. |
40 |
|
|
41 |
|
Ocean surface currents comes from a 3 levels ocean-only run (without seaice) |
42 |
|
using the same wind forcing (uVel_3c0.bin, vVel_3c0.bin) (matlab script: |
43 |
|
"input/getdata.m") |
44 |
|
|
45 |
|
Two matlab scripts ("input/grph_res.m" and "input/grph_diag.m") |
46 |
|
are provided to make some basic plots (snap-shot and time-averaged |
47 |
|
diagnostics). |
48 |
|
|
49 |
|
2) other (secondary) experiments (using the same executable) |
50 |
|
|
51 |
|
a) seaice-dynamics only with LSR solver (input.dyn_lsr/) |
52 |
|
use same forcing as main forward experiment, |
53 |
|
( link input files from "input.dyn_lsr/" dir 1rst, then from "input/" dir ) |
54 |
|
but does not use at all pkg/thsice (advect pkg/seaice properties using |
55 |
|
pkg/seaice advection S/R.); turn off seaice thermodynamics |
56 |
|
(usePW79thermodynamics=.FALSE., in input.dyn_lsr/data.seaice). |
57 |
|
|
58 |
|
b) seaice-dynamics only with JNFK solver (input.dyn_jfnk/) |
59 |
|
use same forcing as main forward experiment, |
60 |
|
( link input files from "input.dyn_jfnk/" dir 1rst, then from "input/" dir ) |
61 |
|
turn off seaice thermodynamics (thSIce_skipThermo=.TRUE., in file |
62 |
|
"input.dyn_jfnk/data.ice") and advect pkg/thsice properties using |
63 |
|
pkg/thsice advection S/R. |
64 |
|
|
65 |
|
c) seaice-thermodynamics only from pkg/seaice (input.thermo/) |
66 |
|
use same forcing as main forward experiment, |
67 |
|
( link input files from "input.thermo/" dir 1rst, then from "input/" dir ) |
68 |
|
Except a different bathymetry (no triangular shape coast line in the South, |
69 |
|
just a simple channel of constant width, with constant and uniform |
70 |
|
zonal current of 0.2 m/s): |
71 |
|
in "input.thermo/data": |
72 |
|
bathyFile = 'channel.bin', |
73 |
|
uVelInitFile = 'const+20.bin', |
74 |
|
vVelInitFile = 'const_00.bin', |
75 |
|
And use different initial seaice concentration from the main forward experiment: |
76 |
|
(in "input.thermo/data.seaice", AreaFile = 'ice0_area.bin', |
77 |
|
and HeffFile = 'ice0_heff.bin',) |
78 |
|
100 % everywhere except in the 1rst and last 2 rows: 0., 10.% in the South |
79 |
|
and 1.%, 0. in the North: |
80 |
|
Turn off seaice dynamics (SEAICEuseDYNAMICS =.FALSE., in |
81 |
|
"input.thermo/data.seaice") which implies no advection (zero ice velocity). |
82 |
|
|
83 |
|
d) seaice-thermodynamics only from pkg/thsice (input.thsice/) |
84 |
|
use same forcing as main forward experiment, |
85 |
|
( link input files from "input.thsice/" dir 1rst, then from "input/" dir ) |
86 |
|
Except for bathymetry and initial seaice concentration which are identical |
87 |
|
to the one used in input.thermo/ : |
88 |
|
(thSIceFract_InitFile='ice0_area.bin', in "input.thsice/data.ice") |
89 |
|
No seaice dynamics and no seaice advection, so that none of pkg/seaice S/R |
90 |
|
are used (useSEAICE = .TRUE., commented out in "input.thsice/data.pkg"), |
91 |
|
|
92 |
|
3) main adjoint experiment (code_ad, input_ad) |
93 |
|
Use similar forward set-up as "input.thermo/". |
94 |
|
(to be completed ...) |