Notes about the column model by C.M. Bitz, 31 Jan 2001.
Revised 21 March, 2001. 
Notes add 3 June, 2001 (see below)

Some changes are necessary to make a column model given the 3D source
code, because the 3D model has only part of the implementation of a
column model.

What it's got:

o option in namelist file ice_in to choose column (kcolumn=1) 
  and IO at the beginning of the run informing you that
  you are running in column mode

o sets up the 1D grid and proper masks (i.e., it skips 
  setting-up a 3D grid) 

o skips computing the opening and closing rates because the ice
  velocities are zero anyway. 


What it doesn't have and needs to make it run:

o a proper driver that skips all dynamics and transport subroutines

o a way to read in the opening and closing rates

o potentially a very different method for exchanging variables with
  the coupler. 

Why aren't these lasts things in the main 3D model yet?  We don't have
any idea how or if the column model will ultimately operate with a
coupler and its other component models. For now, I am avoiding any
details about the coupling in the "official" release.


Of course I have my own way of driving and communicating with the
column model which I will give you and tell you how to implement.
Basically I wrote my own driver (ice_column.F) to replace the 3D model
ice.F . Then I changed ice_coupling.F a lot to make it run without
message passing (MPI) and to have it include opening and closing rates
in its set of data it seeks to input. 

There are two ways to run the column model coupled or uncoupled. The
default is coupled and -Dice_only must be specified to run stand
alone. The coupled version runs with ccm3.X although some
modifications must be made to rip out the ice model in ccm3.X and call
this one instead. 

To run stand alone, the driver ice_column.F has a main program called
"dummy_driver". I have a very crude subroutine called
fabricate_cpl_data to read in some data and fudge other numbers that
the model needs for input. Obviously this routine will need your
attention.

The column model needs imt and jmt set to 1 in ice_model_size.F as I
have done in the source directory.

The changes to ice_coupling.F are all marked with "ccxcc" and
therefore should be fairly easy to transfer to new versions. I added
the CPP variable "column" for ice_coupling.F so presumably the column
version of ice_coupling.F should work fine in the 3D model. However, I
don't want the community model released with this hacked-up thing
yet. It is my hope that you will not have to modify this file.

I also changed the ocean mixed layer scheme for my own selfish
reasons. I think you do not need to adopt these changes provided you
run in stand alone. In this case, you could just grab the 3D model
ice_ocean.F version csim3.4.0 PLUS recent mods from E. Hunke.
However, if using my funny way of running the model coupled to ccm,
you would need to use my changes to ice_ocean.F. These changes are in
the version in the source directory and will be compiled in with the
-Dcolumn option. In particular, I added a bunch of variables to module
so they are available to send to coupler, atmosphere model, or output
file and I use a zenith angle dependent albedo from ccm.

I found it was difficult to compile the system share files on my Linux
machine, so I made my own version for the column model called
sys_column.F90. Sorry this is a bit ugly. It requires changing
ice_history and ice_diagnostic "use src_sys_mod" to "use sys_column".
Presumably if you are smarter than me, you can figure out a way to
make this bugger compile with the standard share file.

There are a few other little things I have done listed below that are
probably optional. Have a look and see if you want them. If you don't,
then go grab the original 3D files from version 3.4.0.

ice_itd.F
  (@1) hs_min = puny    mostly to improve budgets for case
       when last bit of snow is nuked and there is no snow left to
       "renormalize", which caused a relatively big error in the
       budgets (unlikely to be a problem for global model)
  (@2) testid is true (what the heck)

ice_tstm.F
  (@1) made error tolerance more stringent, for fun really

ice_history.F
  (@1) exchanged Fswthru_hist for x-comp of tilt

ice_init.F
  (@1) initialize for SHEBA camp





Given a new source code for the 3D model

1) mv ice.F to something like ice.F.3D so it is not used

2) set imt_global = jmt_global = 1 in ice_model_size.F 

3) copy ice_column.F into the new source directory

4) figure out if new ice_coupling.F has any changes and merge with 
   the column version of ice_coupling.F if necessary. 

5) read through the notes on other modifications I have made and
decide what else needs to be done.

I have only compiled the model with my Linux machine.  You will need
to modify the file your_platform.defs so that it includes -Dcolumn and
-Doceanmixed See Linux.defs for an example. Then type "gmake" and hope
all goes well.  See the directory outputfromdefaultrun for sample
output of a stand alone case run. Use the script "sumup" to ncat the
ice history files.  When I run coupled the open water maxes out at
about 86% and sst reaches a few tenths of a degree above
freezing. However, open water in this stand alone case gets down to
70% and the sst maxes at about -0.5. I don't know why but it is
probably something very silly.





-----------------------------------------------------------------
NOTES FROM 3 June, 2001

USING LATEST CODE: csim_4_4_2

Unfortunately the full 3D model is beginning to diverge a lot from the
column version of the model. A number of new options have been added
in the last couple of months to the 3D and column versions
independently so it is becoming harder for me to use the same code. I
did grab the latest code last week (4.4.2) and diffed each file. I
upgraded whenever possible. However, now there are a few more
differences between global and column versions in addition to those
outlined above. Most of these diffences involve I/O and diagnostics.
I can say with confidence that all the bug fixes and model physics are
current in the column model with version 4.4.2.  I even added a few
more minor bug fixes that are described below.

I didn't upgrade to include the new ice_prescribed option. I didn't
make any changes to ice_coupling.F because they wouldn't affect the
column model anyway.

I didn't update ice_history.F and ice_init.F because they now requires
architecture dependent calls to allow output to go directly to NCAR's
mass store. I don't see the need for mass store for column model
output. I think it would only be a nuisance right now. I will probably
upgrade to this capability in the next major release.

The column ice_diagnostics.F is quite different from the 3D model now
in order to make sensible diagnostic output for a column. 



I added additional recent bug fixes that didn't make it into 4.4.2

ice_therm_driver lateral melt was weighted twice by area and the heat
used to melt laterally was not removed from the mixed layer. 

ice_mechred had missing term in momentum equation for column model



Additional changes to ice_column.F  

1) removed bogus factor of 0.5 multiplying opening
and closing rates. changed input data for opening and closing rates
to use SAR divergence and shear and compute closing 

2) add zenith angle input so the ocean albedo is non-zero (former bug
with the ice_only option. Also rearranged order of computing the ocean
albedo so it is consistent with ice. Note that it isn't necessary for
ice_only runs, but it doesn't hurt either.

3) changed surface flux input forcing to use Judy Curry's file
and the SIMIP2 snow input data set

4) Modified ustar so that it is now fixed at 0.008 m/s (used to be
0.0025 m/s). This prevents the ocean mixed layer from heating up so
much.


Additional Notes: The standard model run melts at a ridiculously high
rate. This causes the ice thickness and concentration to drop
precipitously.  I don't know why exactly. I should point out that I
don't run the model ice_only for my research. I don't have this
problem when the model is run coupled to CCM, but CCM is anomalously
cold in winter and has too little down solar. I wonder if the albedo
isn't effectively tuned for the biases in CCM. It is also possible
that I have an error in the way the model input data is read for
ice_only. I will keep looking.

