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.