| 1 | Name: ISCCP Simulator ICARUS/SCOPS |
|---|
| 2 | What: Simulate ISCCP cloud products from GCM inputs |
|---|
| 3 | Version: 4.1 |
|---|
| 4 | Authors: Steve Klein <klein21@llnl.gov> |
|---|
| 5 | Mark Webb <mark.webb@metoffice.gov.uk> |
|---|
| 6 | |
|---|
| 7 | This README file is written by Mark, and so references to 'I' |
|---|
| 8 | or 'me' refer to Mark. |
|---|
| 9 | |
|---|
| 10 | ************************************************************************ |
|---|
| 11 | This code is subject to copyright, according to a BSD licence |
|---|
| 12 | |
|---|
| 13 | (c) 2009, Lawrence Livermore National Security Limited Liability |
|---|
| 14 | Corporation. All rights reserved. ( icarus.f ) |
|---|
| 15 | |
|---|
| 16 | (c) British Crown Copyright 2009, the Met Office. All rights reserved. |
|---|
| 17 | (remaining code) |
|---|
| 18 | |
|---|
| 19 | Redistribution and use in source and binary forms, with or without |
|---|
| 20 | modification, are permitted provided that the |
|---|
| 21 | following conditions are met: |
|---|
| 22 | |
|---|
| 23 | * Redistributions of source code must retain the above |
|---|
| 24 | copyright notice, this list of conditions and the following |
|---|
| 25 | disclaimer. |
|---|
| 26 | * Redistributions in binary form must reproduce the above |
|---|
| 27 | copyright notice, this list of conditions and the following |
|---|
| 28 | disclaimer in the documentation and/or other materials |
|---|
| 29 | provided with the distribution. |
|---|
| 30 | * Neither the names of the above organisations nor the names of |
|---|
| 31 | their contributors may be used to endorse or promote products |
|---|
| 32 | derived from this software without specific prior written |
|---|
| 33 | permission. |
|---|
| 34 | |
|---|
| 35 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
|---|
| 36 | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
|---|
| 37 | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
|---|
| 38 | A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |
|---|
| 39 | OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
|---|
| 40 | SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
|---|
| 41 | LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
|---|
| 42 | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
|---|
| 43 | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
|---|
| 44 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
|---|
| 45 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
|---|
| 46 | |
|---|
| 47 | ********************************************************************** |
|---|
| 48 | |
|---|
| 49 | 0. Contents |
|---|
| 50 | ----------- |
|---|
| 51 | |
|---|
| 52 | 0. Contents |
|---|
| 53 | 1. About the code |
|---|
| 54 | 2. Conditions of use |
|---|
| 55 | 3. No warranty |
|---|
| 56 | 4. Compilation and testing |
|---|
| 57 | 5. Points to be aware of when using the code |
|---|
| 58 | 1) Are you running a correct version? |
|---|
| 59 | 2) Calling the code from within your model. |
|---|
| 60 | 3) Passing the cloud types in correctly. |
|---|
| 61 | 4) Setting NCOL. |
|---|
| 62 | 5) Setting the seed correctly. |
|---|
| 63 | 6) Memory usage |
|---|
| 64 | 7) Check the results against your total cloud amount. |
|---|
| 65 | 8) Set top_height=1 for best comparisons with ISCCP IR-VIS. |
|---|
| 66 | 9) Handling sunlit points. |
|---|
| 67 | A) Meaning of outputs from the ISCCP simulator. |
|---|
| 68 | 6. Revision history of released versions |
|---|
| 69 | 7. Some other issues to consider |
|---|
| 70 | |
|---|
| 71 | 1. About the code |
|---|
| 72 | ----------------- |
|---|
| 73 | |
|---|
| 74 | This is a code that can be used to take cloud and atmosphere |
|---|
| 75 | information from atmospheric models and convert it into something that is |
|---|
| 76 | comparable to data from the ISCCP. It has two parts. |
|---|
| 77 | |
|---|
| 78 | SCOPS - Subgrid Cloud Overlap Profile Sampler. |
|---|
| 79 | |
|---|
| 80 | This is the core of the code (written by Mark) which samples the subgrid |
|---|
| 81 | distibution of clouds within a model gridbox using a pseudo-random |
|---|
| 82 | sampling process. It takes vertical profiles of convective and large |
|---|
| 83 | scale cloud amount as input and applies a choice of cloud overlap |
|---|
| 84 | assumptions to provide a number of cloud profiles sampled from random |
|---|
| 85 | positions within the gridbox. |
|---|
| 86 | |
|---|
| 87 | ICARUS - ISCCP Clouds and Radiances Using SCOPS. |
|---|
| 88 | |
|---|
| 89 | This is the code (written by Steve) that emulates the ISCCP retrieval |
|---|
| 90 | using the profiles extracted from the GCM gridbox using SCOPS. |
|---|
| 91 | |
|---|
| 92 | For more information, see Klein and Jakob 1999; Webb et al. 2001. |
|---|
| 93 | |
|---|
| 94 | 2. Conditions of use |
|---|
| 95 | -------------------- |
|---|
| 96 | |
|---|
| 97 | Version 4.0 is released under a BSD licence, to promote open |
|---|
| 98 | use of the code. Please refer to the copyright statements in the code. |
|---|
| 99 | |
|---|
| 100 | (c) 2009, Lawrence Livermore National Security Limited Liability |
|---|
| 101 | Corporation. ( icarus.f ) |
|---|
| 102 | |
|---|
| 103 | (c) British Crown Copyright 2009, the Met Office. (other code) |
|---|
| 104 | |
|---|
| 105 | Please email us to let us know if you are using the code so that |
|---|
| 106 | we can let you know about new releases. Please also acknowledge |
|---|
| 107 | us in anything you write up, and cite: |
|---|
| 108 | |
|---|
| 109 | Klein & Jakob (Monthly Weather Review 1999) and |
|---|
| 110 | Webb, Senior, Bony & Morcrette (Climate Dynamics 2001) |
|---|
| 111 | |
|---|
| 112 | 3. Other sources of information. |
|---|
| 113 | ------------------------------- |
|---|
| 114 | |
|---|
| 115 | Announcements regarding the code will be made on a mailing list - see |
|---|
| 116 | below for details on how to subscribe: |
|---|
| 117 | |
|---|
| 118 | Two mailing lists are available for news, updates and comments |
|---|
| 119 | on the ISCCP Simulator software: |
|---|
| 120 | |
|---|
| 121 | isccp-simulator@metoffice.com |
|---|
| 122 | |
|---|
| 123 | (for technical announcements and queries about the simulator) |
|---|
| 124 | |
|---|
| 125 | isccp-simulator-projects@metoffice.com |
|---|
| 126 | |
|---|
| 127 | (for projects using the simulator - e.g. CFMIP) |
|---|
| 128 | |
|---|
| 129 | To subscribe, send a message to majordomo@metoffice.com with the following |
|---|
| 130 | message body: |
|---|
| 131 | |
|---|
| 132 | subscribe isccp-simulator your.email@address.com |
|---|
| 133 | |
|---|
| 134 | The list is a closed one so only subscribers may post to the list. |
|---|
| 135 | Subscription requests may take up to two working days to process. |
|---|
| 136 | |
|---|
| 137 | See also www.cfmip.net |
|---|
| 138 | |
|---|
| 139 | 4. Compilation and testing |
|---|
| 140 | -------------------------- |
|---|
| 141 | |
|---|
| 142 | How to compile me: |
|---|
| 143 | |
|---|
| 144 | gunzip icarus-scops-4.0-bsd.tar.gz |
|---|
| 145 | tar xvf icarus-scops-4.0-bsd.tar |
|---|
| 146 | cd icarus-scops-4.0-bsd |
|---|
| 147 | make clean |
|---|
| 148 | make |
|---|
| 149 | |
|---|
| 150 | You may need to change the name of the compiler in the Makefile, |
|---|
| 151 | e.g. |
|---|
| 152 | |
|---|
| 153 | F77=f90 ( T3E ) |
|---|
| 154 | F77=g77 ( GNU FORTRAN compiler ) |
|---|
| 155 | |
|---|
| 156 | How to test me: |
|---|
| 157 | |
|---|
| 158 | make test |
|---|
| 159 | |
|---|
| 160 | A successful test will look something like the following. |
|---|
| 161 | |
|---|
| 162 | $ make test |
|---|
| 163 | test_isccp_cloud_types.ksh |
|---|
| 164 | make[1]: Entering directory `/home/hc0300/hadmw/icarus-scops-3.4' |
|---|
| 165 | make[1]: `test_isccp_cloud_types' is up to date. |
|---|
| 166 | make[1]: Leaving directory `/home/hc0300/hadmw/icarus-scops-3.4' |
|---|
| 167 | tests passed ok. |
|---|
| 168 | |
|---|
| 169 | An unsuccessful test looks something like the following: |
|---|
| 170 | |
|---|
| 171 | e.g. |
|---|
| 172 | |
|---|
| 173 | t3ea> make test |
|---|
| 174 | test_isccp_cloud_types.ksh |
|---|
| 175 | `test_isccp_cloud_types' is up to date. |
|---|
| 176 | STOP (PE 0) executed at line 92 in Fortran routine '$MAIN' |
|---|
| 177 | STOP (PE 0) executed at line 92 in Fortran routine '$MAIN' |
|---|
| 178 | STOP (PE 0) executed at line 92 in Fortran routine '$MAIN' |
|---|
| 179 | STOP (PE 0) executed at line 92 in Fortran routine '$MAIN' |
|---|
| 180 | STOP (PE 0) executed at line 92 in Fortran routine '$MAIN' |
|---|
| 181 | STOP (PE 0) executed at line 92 in Fortran routine '$MAIN' |
|---|
| 182 | 4225c4225 |
|---|
| 183 | < 0.17 0.30 0.00 0.00 0.15 0.00 0.00 |
|---|
| 184 | --- |
|---|
| 185 | > 0.18 0.30 0.00 0.00 0.15 0.00 0.00 |
|---|
| 186 | 4912c4912 |
|---|
| 187 | < 0.30 0.17 0.00 0.00 0.15 0.00 0.00 |
|---|
| 188 | --- |
|---|
| 189 | > 0.30 0.18 0.00 0.00 0.15 0.00 0.00 |
|---|
| 190 | there may be a problem with the test - files stdout and stdout.expected do not match. |
|---|
| 191 | Make: "test_isccp_cloud_types.ksh": Error code 1 |
|---|
| 192 | cmd-2436 make: Stop. |
|---|
| 193 | |
|---|
| 194 | Minor differences like those seen in this case can be caused by |
|---|
| 195 | rounding characteristics in formatting on different platforms. |
|---|
| 196 | I'd be interested to see any test output that has more serious |
|---|
| 197 | differences than these. |
|---|
| 198 | |
|---|
| 199 | If you see something like this: |
|---|
| 200 | |
|---|
| 201 | [mark@sagan icarus-scops-3.4]$ make test |
|---|
| 202 | ./test_isccp_cloud_types.ksh |
|---|
| 203 | make[1]: Entering directory `/home/mark/icarus-scops-3.4' |
|---|
| 204 | f77 -c test_isccp_cloud_types.f |
|---|
| 205 | f77 -c isccp_cloud_types.f |
|---|
| 206 | f77 -c ran0.f |
|---|
| 207 | f77 test_isccp_cloud_types.f isccp_cloud_types.o ran0.o -o test_isccp_cloud_types |
|---|
| 208 | make[1]: Leaving directory `/home/mark/icarus-scops-3.4' |
|---|
| 209 | 916c916 |
|---|
| 210 | < meantaucld = 0.00000 |
|---|
| 211 | --- |
|---|
| 212 | > meantaucld = 3.25000 |
|---|
| 213 | 1942c1942 |
|---|
| 214 | < meantaucld = 0.00000 |
|---|
| 215 | --- |
|---|
| 216 | > meantaucld = 1.67000 |
|---|
| 217 | 2968c2968 |
|---|
| 218 | < meantaucld = 0.00000 |
|---|
| 219 | --- |
|---|
| 220 | > meantaucld = 1.89000 |
|---|
| 221 | 3704c3704 |
|---|
| 222 | < meantaucld = 0.00000 |
|---|
| 223 | --- |
|---|
| 224 | > meantaucld = 3.25000 |
|---|
| 225 | 4440c4440 |
|---|
| 226 | < meantaucld = 0.00000 |
|---|
| 227 | --- |
|---|
| 228 | > meantaucld = 1.67000 |
|---|
| 229 | 5176c5176 |
|---|
| 230 | < meantaucld = 0.00000 |
|---|
| 231 | --- |
|---|
| 232 | > meantaucld = 1.89000 |
|---|
| 233 | |
|---|
| 234 | then you are most likely unable to read the unformatted files containing the |
|---|
| 235 | optical thickness weights - try setting readbinary=.false. near line |
|---|
| 236 | 24 of test_isccp_cloud_types.f |
|---|
| 237 | |
|---|
| 238 | 5. Points to be aware of when using the code |
|---|
| 239 | -------------------------------------------- |
|---|
| 240 | |
|---|
| 241 | 1) Are you running a correct version? |
|---|
| 242 | |
|---|
| 243 | There are various versions of the code around. If you |
|---|
| 244 | didn't get the code directly from me, Steve, the GCSS |
|---|
| 245 | DIME website or www.cfmip.net, what you have may not be what is |
|---|
| 246 | described in the version history below. Just because |
|---|
| 247 | it says it's version x does not mean that it is. |
|---|
| 248 | A good way to check is to take what you have, run the tests |
|---|
| 249 | supplied with the latest version and see if the results |
|---|
| 250 | are as expected. |
|---|
| 251 | |
|---|
| 252 | If you have a version that doesn't look like one of the ones below, |
|---|
| 253 | please send me a copy so that I can incorporate any improvements |
|---|
| 254 | into a future release. |
|---|
| 255 | |
|---|
| 256 | In particular, if you are running with a version that says version 1.13 in |
|---|
| 257 | isccp_cloudtypes.f, the results may be incorrect. |
|---|
| 258 | |
|---|
| 259 | 2) Calling the code from within your model. |
|---|
| 260 | |
|---|
| 261 | Before the vector version of the code was available, people |
|---|
| 262 | looped over model grid points, calling the code column by column, |
|---|
| 263 | either on all model points, or just those with daylight. Now |
|---|
| 264 | that the code accepts vector inputs, you have the choice of |
|---|
| 265 | continuing to do this, or of passing full model fields into the |
|---|
| 266 | code. The latter approach is likely to be more CPU efficient, |
|---|
| 267 | particularly on vector processors, but will use more memory. |
|---|
| 268 | See the section on memory usage if you run out of memory. |
|---|
| 269 | |
|---|
| 270 | Although the input arrays are mostly of the form (npoints,nlevs), |
|---|
| 271 | there is no problem passing in arrays of the form (nx,ny,nlevs) |
|---|
| 272 | if that is more convenient for you. As long as npoints=nx*ny, |
|---|
| 273 | this should be fine, although it is worth switching |
|---|
| 274 | the debug logical on occasionally to check that all of the |
|---|
| 275 | arguments are being passed correctly. |
|---|
| 276 | |
|---|
| 277 | 3) Passing the cloud types in correctly. |
|---|
| 278 | |
|---|
| 279 | When running with convective cloud, cc represents the _total_ |
|---|
| 280 | cloud amount, which includes the convective fraction |
|---|
| 281 | conv. i.e. cc = conv + stratiform. It is a common mistake |
|---|
| 282 | to assume that cc = stratiform and conv = convective. |
|---|
| 283 | The treatment of convective cloud assumes that you can maximally |
|---|
| 284 | overlap the convective cloud first and then overlap the |
|---|
| 285 | stratiform cloud in the remaining cloud free space according |
|---|
| 286 | to the specified overlap type. This is consistent with the |
|---|
| 287 | overlap scheme in Edwards/Slingo (in the HadCM3) model |
|---|
| 288 | ( convective cloud maximally overlapped within but may not |
|---|
| 289 | be true for schemes used for overlapping separate convective and |
|---|
| 290 | stratiform clouds in other models. |
|---|
| 291 | |
|---|
| 292 | 4) Setting NCOL. |
|---|
| 293 | |
|---|
| 294 | The simulator uses a Monte Carlo method for sampling various columns |
|---|
| 295 | within each model gridbox. The number of columns is set by the value |
|---|
| 296 | of NCOL. The value that you want to set NCOL to depends on the |
|---|
| 297 | accuracy you want and amount of averaging you are doing on the outputs. |
|---|
| 298 | |
|---|
| 299 | The recommended rule of thumb recommended by the authors is that you |
|---|
| 300 | should aim for something like 2400 samples to keep statistical |
|---|
| 301 | noise to a reasonable level. |
|---|
| 302 | |
|---|
| 303 | For example, if you are doing no averaging, (i.e. you are |
|---|
| 304 | be calling the simulator once on instantaneous model variables |
|---|
| 305 | and looking directly at the results), you should set |
|---|
| 306 | might expect that you need to set NCOL to something around 2400. |
|---|
| 307 | |
|---|
| 308 | If you are looking at daily means, and are calculating this by |
|---|
| 309 | averaging 8 3-hourly calls to the simulator, NCOL should be set |
|---|
| 310 | to 300 ( = 2400/8 ) |
|---|
| 311 | |
|---|
| 312 | If, say, you are looking at monthly means, and are calling the |
|---|
| 313 | simulator, say, every 15 hours, NCOL should be set to |
|---|
| 314 | 50 =2400/(24*30/15) |
|---|
| 315 | |
|---|
| 316 | If you are looking at monthly means, and are calculating this by |
|---|
| 317 | averaging 8 3-hourly calls per day to the simulator, NCOL should be set |
|---|
| 318 | to 10 ( = 2400/(8*30) ) |
|---|
| 319 | |
|---|
| 320 | *WARNING* Running with NCOL < 10 is not recommended even if you are |
|---|
| 321 | doing a lot of averaging on the results - I have experienced |
|---|
| 322 | systematic biases when doing this myself, although this might |
|---|
| 323 | not be a problem if the random number generator is seeded |
|---|
| 324 | properly. |
|---|
| 325 | |
|---|
| 326 | Finally, don't forget to set NCOLMAX to be at least as big |
|---|
| 327 | as NCOL, ( but not bigger than necessary as the amount |
|---|
| 328 | of memory used is proportional to NCOLMAX.) ( ** Note that |
|---|
| 329 | ncolmax is not required for versions 3.2 onwards. ) |
|---|
| 330 | |
|---|
| 331 | 5) Setting the seed correctly. |
|---|
| 332 | |
|---|
| 333 | It is essential that the seed for the random number generator |
|---|
| 334 | is set to a different value for each model gridbox it is called on, |
|---|
| 335 | as it is possible that the choice of the same seed value every time |
|---|
| 336 | may introduce some statistical bias in the results, particularly |
|---|
| 337 | for low values of NCOL. |
|---|
| 338 | |
|---|
| 339 | In the simulations in Webb et al 2001, this was done by setting |
|---|
| 340 | seed=(pfull(nlev)-int(pfull(nlev)))*100+1, although this |
|---|
| 341 | may or may not work for you. I now recommend something more like: |
|---|
| 342 | seed=(pfull(nlev)-int(pfull(nlev)))*100000+1 |
|---|
| 343 | as always seeding with a small number could in theory |
|---|
| 344 | cause problems. |
|---|
| 345 | |
|---|
| 346 | From version 2.2 onwards, seed is passed as an argument to |
|---|
| 347 | isccp_cloudtypes. |
|---|
| 348 | |
|---|
| 349 | ( Note that a seed value of 50 is required to get the correct |
|---|
| 350 | test output. ) |
|---|
| 351 | |
|---|
| 352 | 6) Memory usage |
|---|
| 353 | |
|---|
| 354 | If you find that you run out of memory setting large values |
|---|
| 355 | on NCOL, try calling the simulator repeatedly and averaging the |
|---|
| 356 | results. If you do this, set the seed before the first call |
|---|
| 357 | but let subsequent calls use the value of the seed returned |
|---|
| 358 | by the previous call. If you set the seed to the |
|---|
| 359 | same value for each call, each call will give exactly the |
|---|
| 360 | same results, defeating the object of the repeated |
|---|
| 361 | call. |
|---|
| 362 | |
|---|
| 363 | 7) Check the results against your total cloud amount. |
|---|
| 364 | |
|---|
| 365 | It is strongly recommended that you check that the code is |
|---|
| 366 | giving results consistent with the overlap scheme used in |
|---|
| 367 | your radiation code. This can be done by: |
|---|
| 368 | |
|---|
| 369 | a) setting the sample size to a large values, ideally 10000 |
|---|
| 370 | ( ncol=10000 or an average of 100 calls with ncol=100 ) |
|---|
| 371 | b) running the code on a varied selection of inputs from your |
|---|
| 372 | model |
|---|
| 373 | c) summing the output from all of the cloud classes (including the |
|---|
| 374 | ones representing points with tau < isccp_taumin ) and checking |
|---|
| 375 | that this is statistically equivalent to the total cloud amount |
|---|
| 376 | diagnosed in your radiation scheme for sunlit points. |
|---|
| 377 | |
|---|
| 378 | If you can't get this to agree, switch on the debug flag and |
|---|
| 379 | check that the values are being passed in properly. Look |
|---|
| 380 | at the code and see if you are using a value of overlap |
|---|
| 381 | that is consistent with the overaps used in your radiation |
|---|
| 382 | code. Failing that, I may be able to help, but can't guarantee |
|---|
| 383 | to be able to modify the code to match your overlap assumptions. |
|---|
| 384 | |
|---|
| 385 | 8) Set top_height=1 for best comparisons with ISCCP IR-VIS. |
|---|
| 386 | |
|---|
| 387 | It is recommended that for best comparison with ISCCP IR-VIS |
|---|
| 388 | products the code be set to calculate effective rather than |
|---|
| 389 | actual cloud top pressures i.e. set top_height to 1 |
|---|
| 390 | for comparison with VIS/IR daytime products (consistent |
|---|
| 391 | with Webb et al 2001.) However if you want to examine |
|---|
| 392 | nighttime products from ISCCP, the option set top_height = 3 |
|---|
| 393 | would be the best one to compare to at night. Using top_height |
|---|
| 394 | = 1 at night would be significantly worse in this case. |
|---|
| 395 | |
|---|
| 396 | 9) Handling sunlit points. |
|---|
| 397 | |
|---|
| 398 | for top_height=(1 or 2) the input array sunlit should be set to 1 for |
|---|
| 399 | day points and 0 for nighttime points. |
|---|
| 400 | |
|---|
| 401 | The outputs are set as described below: |
|---|
| 402 | for the following values of top_height. These output |
|---|
| 403 | domains are set on the assumption that the outputs |
|---|
| 404 | will be compared with the ISCCP variables shown below |
|---|
| 405 | (documented at |
|---|
| 406 | |
|---|
| 407 | http://eosweb.larc.nasa.gov/PRODOCS/isccp/table_isccp.html |
|---|
| 408 | -> D1 parameters list. |
|---|
| 409 | -> DX parameters list |
|---|
| 410 | ) |
|---|
| 411 | |
|---|
| 412 | all points (A), sunlit points only (S) or not diagnosed (0) |
|---|
| 413 | |
|---|
| 414 | top_height=1 |
|---|
| 415 | ------------ |
|---|
| 416 | |
|---|
| 417 | diagnostic domain comparable ISCCP diagnostic |
|---|
| 418 | |
|---|
| 419 | fq_isccp, S D1 30d-71d |
|---|
| 420 | totalcldarea, A D1 12 Number of cloudy pixels |
|---|
| 421 | meanptop, S D1 78 Mean PC for cloudy pixels (VIS-adjusted day, unadjusted night) |
|---|
| 422 | meantaucld, S D1 92d Mean TAU for cloudy pixels |
|---|
| 423 | boxtau, S DX 26. VALBTA : VIS retrieved cloud tau or surface albedo |
|---|
| 424 | DX 30. VTAUIC : VIS retrieved ice cloud tau |
|---|
| 425 | boxptop S DX 29. VPRS : VIS adjusted cloud top pressure |
|---|
| 426 | |
|---|
| 427 | Please note that currently meanptop is not diagnosed in the IS for night-time |
|---|
| 428 | points if top_height=1, although ISCCP D1 item 78 is available for day and night |
|---|
| 429 | points. For top_height=1, meanptop should only be compared to |
|---|
| 430 | item 78 for sunlit points. |
|---|
| 431 | |
|---|
| 432 | top_height=2 |
|---|
| 433 | ------------ |
|---|
| 434 | |
|---|
| 435 | as for top_height=1 |
|---|
| 436 | |
|---|
| 437 | top_height=3 |
|---|
| 438 | ------------ |
|---|
| 439 | |
|---|
| 440 | diagnostic domain comparable ISCCP diagnostic |
|---|
| 441 | |
|---|
| 442 | fq_isccp, A d1 23-29 Cloud top pressure distribution (unadjusted PC) |
|---|
| 443 | ( although this is in 7 classes rather than 49, so |
|---|
| 444 | you need to sum over the different tau classes, excluding |
|---|
| 445 | the ones for tau below isccp_taumin) * |
|---|
| 446 | totalcldarea, A d1 13 Number of IR-cloudy pixels |
|---|
| 447 | meanptop, A d1 79 Mean PC for IR-cloudy pixels (unadjusted) |
|---|
| 448 | meantaucld, 0 not diagnosed |
|---|
| 449 | boxtau, 0 not diagnosed |
|---|
| 450 | boxptop A dx 18. IPRS : IR retrieved cloud top pressure |
|---|
| 451 | |
|---|
| 452 | * Note from Steve: |
|---|
| 453 | |
|---|
| 454 | Note that we have a problem here. One thing I didn't sort out was |
|---|
| 455 | that for the ir-only method what would be a minimum cloud emissivity for |
|---|
| 456 | which the ir-threshold method would not detect cloud. Probably the most |
|---|
| 457 | defensible method, which would not be hard to implement, would be to compare |
|---|
| 458 | the clear sky and cloudy sky brightness temperatures. If the difference is |
|---|
| 459 | less than the ir-thresholds then the cloud would not be seen by ISCCP. |
|---|
| 460 | The table of ir-thresholds is table 3.2.4 of ISCCP documentation. This |
|---|
| 461 | table is scene-type (e.g. ocean/land/coastal/high topography/snow covered) |
|---|
| 462 | dependent. Thus the simulator inputs would need to have this information |
|---|
| 463 | included. This will take time to build. |
|---|
| 464 | |
|---|
| 465 | For now probably the best thing is to do is to note that |
|---|
| 466 | the isccp_taumin thresholding is not the best but an interim measure until |
|---|
| 467 | a proper method (i.e. the last paragraph) can be implemented. |
|---|
| 468 | |
|---|
| 469 | A) Time averaging of outputs from the ISCCP simulator. |
|---|
| 470 | |
|---|
| 471 | It is important to be careful when time averaging the outputs from |
|---|
| 472 | the IS as some variables are set to a missing data indicator in certain |
|---|
| 473 | cases - e.g. for night points when top_height=(1 or 2) and for in-cloud |
|---|
| 474 | values where the cloud fraction is zero. |
|---|
| 475 | |
|---|
| 476 | The time averaging needs to be done outside the simulator, and from |
|---|
| 477 | version 3.6 onwards, this can be done in two ways. |
|---|
| 478 | |
|---|
| 479 | 1/ Missing data indicator method |
|---|
| 480 | |
|---|
| 481 | This option may be preferred in models where the time averaging |
|---|
| 482 | system knows about missing data indicators. |
|---|
| 483 | |
|---|
| 484 | icarus.f now contains a data statement which sets |
|---|
| 485 | a real variable called "output_missing_value" to a value of |
|---|
| 486 | -1.E+30. This can be changed to match the value of the |
|---|
| 487 | missing data indicator in the model. |
|---|
| 488 | |
|---|
| 489 | Variables fq_isccp and totalcldarea will contain the missing |
|---|
| 490 | data indicator at night when top_height=(1 or 2). These should |
|---|
| 491 | be averaged only over the points which are not flagged by the |
|---|
| 492 | missing data indicator. |
|---|
| 493 | |
|---|
| 494 | Variables "meanptop", "meanalbedocld" and "meantaucld" will contain |
|---|
| 495 | the missing data indicator at night when top_height=(1 or 2), |
|---|
| 496 | and also when totalcldarea is zero. |
|---|
| 497 | |
|---|
| 498 | Time means for "meanptop", "meanalbedocld", "meantaucld" should |
|---|
| 499 | be made using cloud area weighted grid box mean values to |
|---|
| 500 | prevent, for example, very large optical depths over |
|---|
| 501 | small cloud fractions dominating the statistics - e.g. |
|---|
| 502 | |
|---|
| 503 | gridbox_meanalbedocld=meanalbedocld*totalcldarea for totalcldarea>0 |
|---|
| 504 | =0 for totalcldarea=0 |
|---|
| 505 | |
|---|
| 506 | These should be set zero when totalcldarea is zero, overwriting |
|---|
| 507 | the missing data indicator value present. Any missing data |
|---|
| 508 | indicators at night time points should remain, as for fq_isccp |
|---|
| 509 | and totalcldarea. |
|---|
| 510 | |
|---|
| 511 | At the analysis stage these should be divided by the mean cloud fraction |
|---|
| 512 | to produce cloud area weighted in-cloud values - e.g. |
|---|
| 513 | |
|---|
| 514 | avg(meanalbedocld) = avg(gridbox_meanalbedocld)/avg(totalcldarea). |
|---|
| 515 | |
|---|
| 516 | Points where avg(totalcldarea) is zero will need to be considered |
|---|
| 517 | 'missing data' |
|---|
| 518 | |
|---|
| 519 | 2/ Missing data mask method |
|---|
| 520 | |
|---|
| 521 | This option may be preferred in models where the time averaging |
|---|
| 522 | system does not use missing data indicators, and is based on |
|---|
| 523 | guidance for versions of the simulator prior to vn3.6. |
|---|
| 524 | |
|---|
| 525 | icarus.f now contains a data statement which sets |
|---|
| 526 | a real variable called "output_missing_value" to a value of |
|---|
| 527 | -1.E+30. This value should be set to zero. |
|---|
| 528 | |
|---|
| 529 | When top_height=(1 or 2), a sunlit points mask variable will be |
|---|
| 530 | required. This needs to be type REAL, taking a value of 1 for |
|---|
| 531 | lit points and a value of 0 for night points (essentially |
|---|
| 532 | a REAL version of the INTEGER sunlit variable.) A time |
|---|
| 533 | average should be made of this variable, which will be used |
|---|
| 534 | to 'unweight' the time mean outputs at the analysis stage. |
|---|
| 535 | |
|---|
| 536 | Variables fq_isccp and totalcldarea will contain zeros at night |
|---|
| 537 | when top_height=(1 or 2). These variables should be averaged over |
|---|
| 538 | all points. These averages can be divided by the time average |
|---|
| 539 | sunlit mask at the analysis stage. Points where the mask is |
|---|
| 540 | zero should be considered 'missing data'. |
|---|
| 541 | |
|---|
| 542 | Variables "meanptop", "meanalbedocld" and "meantaucld" will contain |
|---|
| 543 | zeros at night when top_height=(1 or 2), and also when totalcldarea |
|---|
| 544 | is zero. |
|---|
| 545 | |
|---|
| 546 | Time means for "meanptop", "meanalbedocld", "meantaucld" should |
|---|
| 547 | be made using cloud area weighted grid box mean values to |
|---|
| 548 | prevent, for example, very large optical depths over |
|---|
| 549 | small cloud fractions dominating the statistics - e.g. |
|---|
| 550 | |
|---|
| 551 | gridbox_meanalbedocld=meanalbedocld*totalcldarea |
|---|
| 552 | |
|---|
| 553 | In this case all points can be treated the same way in the |
|---|
| 554 | weighting process and in the time averaging. |
|---|
| 555 | |
|---|
| 556 | At the analysis stage these should be divided by the mean cloud fraction |
|---|
| 557 | to produce cloud area weighted in-cloud values - e.g. |
|---|
| 558 | |
|---|
| 559 | avg(meanalbedocld) = avg(gridbox_meanalbedocld)/avg(totalcldarea). |
|---|
| 560 | |
|---|
| 561 | Locations where avg(totalcldarea) (e.g. night points or cloud |
|---|
| 562 | free points) are zero should be considered 'missing data'. |
|---|
| 563 | Care should be taken to ensure that the numerator and demoninator |
|---|
| 564 | have had the sunlit mask applied consistently to both, or to |
|---|
| 565 | neither, which should give the same result. |
|---|
| 566 | |
|---|
| 567 | Mark Webb |
|---|
| 568 | ________________________________________________________________________ |
|---|
| 569 | |
|---|
| 570 | 6. Revision history of released versions |
|---|
| 571 | ---------------------------------------- |
|---|
| 572 | _______________________________________________________________________________ |
|---|
| 573 | |
|---|
| 574 | Changes made by Steve Klein from version 4.0 to 4.1 |
|---|
| 575 | |
|---|
| 576 | 1/ This is a bugfix for a bug found by Jason Cole (thanks, Jason!). |
|---|
| 577 | This is for *RARE* cases where the cloud temperature is greater than |
|---|
| 578 | any temperature in the troposphere, however, the maximum temperature |
|---|
| 579 | in the atmosphere is in the stratosphere. Under these cases, the cloud |
|---|
| 580 | top pressure variable, ptop, was not assigned, and (depending on |
|---|
| 581 | compiler) the model crashes because it couldn't evaluate the scalar |
|---|
| 582 | operations involving ptop. |
|---|
| 583 | |
|---|
| 584 | The fix is to assign the maximum and minimum temperatures used in the |
|---|
| 585 | cloud-top pressure detection to temperatures within the troposphere. |
|---|
| 586 | This will prevent any values of ptop remaining undefined. |
|---|
| 587 | |
|---|
| 588 | _______________________________________________________________________________ |
|---|
| 589 | |
|---|
| 590 | Changes made by Steve Klein and Mark Webb from version 3.8 to 4.0 |
|---|
| 591 | |
|---|
| 592 | 1/ The experimental setting to top_height_direction (= 2) is now declared |
|---|
| 593 | to be the default setting for all ISCCP simulator uses. When implementing |
|---|
| 594 | version 4.0 into a model, please confirm that the setting of this |
|---|
| 595 | variable is correct. |
|---|
| 596 | |
|---|
| 597 | 2/ BSD copyright is now applied to the simulator. |
|---|
| 598 | _______________________________________________________________________________ |
|---|
| 599 | |
|---|
| 600 | Changes made by Steve Klein and Mark Webb from version 3.7 to 3.8 |
|---|
| 601 | |
|---|
| 602 | Three changes have been made in this release. |
|---|
| 603 | |
|---|
| 604 | 1/ isccp_cloud_types is now a wrapper routine which calls SCOPS and |
|---|
| 605 | ICARUS routines. This has been done to allow the ISCCP simulator to |
|---|
| 606 | be easily bundled along with COSP (CFMIP Observational Simulator |
|---|
| 607 | Package - see www.cfmip.net ) The ICARUS routine contains most |
|---|
| 608 | of the code that was in ISCCP_CLOUD_TYPES previously. |
|---|
| 609 | |
|---|
| 610 | The integer call_scops has been removed from the ISCCP_CLOUD_TYPES |
|---|
| 611 | argument list, as users who wish to bypass SCOPS can now do so by |
|---|
| 612 | calling the ICARUS routine directly. |
|---|
| 613 | |
|---|
| 614 | Users who call SCOPS directly should note that SCOPS now takes |
|---|
| 615 | slightly different arguments. Previously the cloud fraction |
|---|
| 616 | inputs cc(npoints,nlev) and conv(npoints,nlev) were copied into |
|---|
| 617 | tca(npoints,0:nlev) and cca(npoints,nlev) in ISCCP_CLOUD_TYPES, |
|---|
| 618 | which were then passed into SCOPS. SCOPS now takes cc(npoints,nlev) |
|---|
| 619 | and conv(npoints,nlev) as inputs, to be consistent with ISCCP_CLOUD_TYPES |
|---|
| 620 | and ICARUS. tca(npoints,0:nlev) is now an internal variable in SCOPS, |
|---|
| 621 | and the cca variable has been removed since it was an unnecessary copy |
|---|
| 622 | of the conv variable. |
|---|
| 623 | |
|---|
| 624 | 2/ This version of the simulator adds the capability to output as |
|---|
| 625 | diagnostic variables the grid-box mean (i.e. average over sub-columns) |
|---|
| 626 | of the 10.5 micron infrared brightness temperature for all-sky and |
|---|
| 627 | clear-sky conditions. These variables are called "meantb" and "meantbclr |
|---|
| 628 | |
|---|
| 629 | 3/ A minor bugfix has been made to some debugging code in icarus.f |
|---|
| 630 | to prevent an array bound error when setting the levmatch variable. |
|---|
| 631 | levmatch is a debugging variable and and fixing this bug does not |
|---|
| 632 | affect pc-tau counts or any other output variables of the |
|---|
| 633 | simulator. |
|---|
| 634 | |
|---|
| 635 | _______________________________________________________________________________ |
|---|
| 636 | Changes made by Steve Klein and Mark Webb from version 3.6 to 3.7 |
|---|
| 637 | |
|---|
| 638 | Two changes have been made in this release. |
|---|
| 639 | |
|---|
| 640 | 1/ In all previous versions of the code, two input tables were used to |
|---|
| 641 | convert cloud optical thickness into cloud albedo and vice versa. These |
|---|
| 642 | tables, invtau and tautab, came from the original ISCCP software and |
|---|
| 643 | documentation. In this version of the code, these tables are removed |
|---|
| 644 | from the code and replaced with the following analytic functions which |
|---|
| 645 | are a reasonable fit to these tables. |
|---|
| 646 | |
|---|
| 647 | ALB = TAU**0.895 / ( TAU**0.895 + 6.82 ) |
|---|
| 648 | |
|---|
| 649 | TAU = ( 6.82 / ( ( 1. / ALB ) - 1. ) ) ** (1./0.895) |
|---|
| 650 | |
|---|
| 651 | where TAU is the cloud optical thickness and ALB is the cloud albedo. |
|---|
| 652 | |
|---|
| 653 | 2/ Option to bypass call to SCOPS in ISCCP_CLOUD_TYPES |
|---|
| 654 | |
|---|
| 655 | This is to support integration into the CFMIP Observational Simulator |
|---|
| 656 | Package (COSP - see http://www.cfmip.net ) |
|---|
| 657 | |
|---|
| 658 | New input arguments for isccp_cloud_types: |
|---|
| 659 | |
|---|
| 660 | integer call_scops |
|---|
| 661 | real frac_out(npoints,ncol,nlev) |
|---|
| 662 | |
|---|
| 663 | Default behaviour when using the ISCCP simulator on its own is |
|---|
| 664 | to set the integer argument call_scops to 1. frac_out does |
|---|
| 665 | not need to be set in this case. |
|---|
| 666 | |
|---|
| 667 | If calling scops externally to isccp_cloud_types, call_scops should |
|---|
| 668 | be set to zero and overlap information passed in using frac_out. |
|---|
| 669 | |
|---|
| 670 | _______________________________________________________________________________ |
|---|
| 671 | Changes made by Steve Klein from versions 3.5.1 to 3.6 |
|---|
| 672 | |
|---|
| 673 | The modifications can be divided into three groups. Those involving |
|---|
| 674 | averages of cloud properties across the sub-columns (i.e. the |
|---|
| 675 | "Lightweight" diagnostics of total cloud area, mean cloud top pressure, |
|---|
| 676 | and mean cloud albedo), those involving the determination of |
|---|
| 677 | cloud-top pressure, and those to handle missing data issues. |
|---|
| 678 | |
|---|
| 679 | All modifications (except the missing data issues) change results, |
|---|
| 680 | although the differences in results should be relatively minor for |
|---|
| 681 | most situations. The most prominent differences will be: |
|---|
| 682 | |
|---|
| 683 | (a) the values of the lightweight diagnostics in grid-boxes that have a |
|---|
| 684 | lot of cloud with optical thickness less than the minimum that ISCCP can |
|---|
| 685 | detect ("isccp_taumin" = 0.3). |
|---|
| 686 | |
|---|
| 687 | (b) the values of cloud-top pressure for clouds under strong temperature |
|---|
| 688 | inversions (e.g. marine stratocumulus) when the experimental cloud-top |
|---|
| 689 | pressure assignment is used. Note that currently the experimental |
|---|
| 690 | cloud-top pressure assignment is not recommended but may be become |
|---|
| 691 | default if it is demonstrated to yield improved agreement with ISCCP |
|---|
| 692 | observations through ICARUS-assessment tests being performed by Jay Mace |
|---|
| 693 | and his colleagues (e.g. Mace et al. JGR 2005, doi: 10.1029/2005JD005921). |
|---|
| 694 | |
|---|
| 695 | Missing data handling |
|---|
| 696 | --------------------- |
|---|
| 697 | |
|---|
| 698 | 1) In the case of dark points but "top_height" not equal to 3, the |
|---|
| 699 | output variables will now be equal to the value of a new real defined in the |
|---|
| 700 | code. This real is called "output_missing_value" and set to -1.E+30 in |
|---|
| 701 | a data statement in icarus.f. Note that the output variables include |
|---|
| 702 | "fq_isccp", "totalcldarea", "meanptop", "meanalbedocld", "meantaucld", |
|---|
| 703 | "boxptop", and "boxtau". |
|---|
| 704 | |
|---|
| 705 | 2) In the case of "totalcldarea" = 0., "meanptop", "meanalbedocld" and |
|---|
| 706 | "meantaucld" will be equal to the "output_missing_value". |
|---|
| 707 | |
|---|
| 708 | 3) For all sub-columns with no cloud, "boxptop" and "boxtau" now have |
|---|
| 709 | the "output_missing_value" and not the values of 0. as they did previously. |
|---|
| 710 | |
|---|
| 711 | |
|---|
| 712 | Lightweight diagnostics modifications |
|---|
| 713 | ------------------------------------- |
|---|
| 714 | |
|---|
| 715 | 1. Restrictions involving the reporting of totalcldarea |
|---|
| 716 | |
|---|
| 717 | In the original code, "totalcldarea", which is the diagnostic for the |
|---|
| 718 | total horizontal area of a grid box covered by clouds at any level, was |
|---|
| 719 | always calculated. This was done even though other diagnostics such as |
|---|
| 720 | "meanptop" and "meantaucld", which are the mean cloud-top pressure and |
|---|
| 721 | cloud optical thickness, were calculated only for sunlit gridpoints in |
|---|
| 722 | most circumstances. This modification restricts the calculation of |
|---|
| 723 | "totalcldarea" to the same situations used to calculate "meanptop" and |
|---|
| 724 | "meantaucld". |
|---|
| 725 | |
|---|
| 726 | To review, these diagnostics are calculated only if the grid-box is |
|---|
| 727 | sunlit in the case that "top_height" = 1 or 2, and at all times is |
|---|
| 728 | "top_height" = 3. The value of "top_height" equal to 1 corresponds to |
|---|
| 729 | the calculation of cloud-top pressure using algorithms appropriate to |
|---|
| 730 | compare to ISCCP daylight data (i.e. the pc-tau diagrams) and is the |
|---|
| 731 | value used in all CFMIP projects. The value of "top_height" equal to 2 |
|---|
| 732 | corresponds the assignment of cloud-top pressure at the model's actual |
|---|
| 733 | highest cloud-top pressure. The value of "top_height" equal to 3 |
|---|
| 734 | corresponds to the calculation of cloud-top pressure according the |
|---|
| 735 | methods that correspond to ISCCP IR-only retrievals which are performed |
|---|
| 736 | both at night and during the day. It should be used when comparing to |
|---|
| 737 | the ISCCP IR-only cloud data, but I haven't seen that ever done, |
|---|
| 738 | although it could be. |
|---|
| 739 | |
|---|
| 740 | 2. Addition of "meanalbedocld" diagnostic |
|---|
| 741 | |
|---|
| 742 | Williams and Webb (2008, Climate Dynamics doi:10.1007/s00382-008-0443-1) |
|---|
| 743 | created the term "Lightweight diagnostics" to represent a much smaller |
|---|
| 744 | set of ISCCP simulator output quantities than the 49 pc-tau histograms. |
|---|
| 745 | These diagnostics are the total cloud area ("totalcldarea"), the mean |
|---|
| 746 | cloud-top pressure ("meanptop"), and the mean cloud albedo |
|---|
| 747 | ("meanalbedocld"). These lightweight diagnostics were also used in an |
|---|
| 748 | earlier clustering study involving ISCCP observations (Gordon et al. JGR |
|---|
| 749 | 2005 doi:10.1029/2004JD005027). |
|---|
| 750 | |
|---|
| 751 | The modification is to have the simulator compute and output the mean |
|---|
| 752 | cloud albedo ("meanalbedocld"). Previous versions of the ISCCP simulator |
|---|
| 753 | did not do this but output the mean cloud optical thickness |
|---|
| 754 | ("meantaucld") which was internally calculated from the mean cloud |
|---|
| 755 | albedo. This modification results in the addition of "meanalbedocld" to |
|---|
| 756 | the isccp_cloud_types subroutine interface and will require users to |
|---|
| 757 | make appropriate modifications to their calling statements to ISCCP |
|---|
| 758 | simulator. |
|---|
| 759 | |
|---|
| 760 | 3. Restriction of lightweight diagnostics to clouds with optical |
|---|
| 761 | thickness greater than the minimum ISCCP can detect ("isccp_taumin") |
|---|
| 762 | |
|---|
| 763 | If these lightweight diagnostics are to be compared to ISCCP |
|---|
| 764 | observations, they must be calculated using only the model clouds that |
|---|
| 765 | ISCCP can detect. In the case of the simulator, this condition is |
|---|
| 766 | determined by saying that clouds with optical thickness less than a |
|---|
| 767 | threshold ("isccp_taumin") are not detectable by ISCCP. The current |
|---|
| 768 | value of "isccp_taumin" is 0.3. The modification limits the calculation |
|---|
| 769 | of "totalcldarea", "meanptop", "meanalbedocld", and "meanptop", to |
|---|
| 770 | clouds in sub-columns with column cloud optical thicknesses greater than |
|---|
| 771 | "isccp_taumin". Previous versions of the simulator did not impose this |
|---|
| 772 | restriction. |
|---|
| 773 | |
|---|
| 774 | This will have a noticeable impact on the values of the lightweight |
|---|
| 775 | diagnostics in grid-boxes that have a lot of model clouds with optical |
|---|
| 776 | thickness less than "isccp_taumin". Relative to previous versions of the |
|---|
| 777 | ISCCP simulator, this will result in decreases of "totalcldarea" and |
|---|
| 778 | increases of "meanalbedocld" and "meantaucld". |
|---|
| 779 | |
|---|
| 780 | |
|---|
| 781 | Cloud-top pressure modifications |
|---|
| 782 | -------------------------------- |
|---|
| 783 | |
|---|
| 784 | 1. Actual cloud-top pressures for "top_height" equal to 2. |
|---|
| 785 | |
|---|
| 786 | In the case that one wants to examine the cloud-top pressures actually |
|---|
| 787 | produced by a model, one selects "top_height" equal to 2. This |
|---|
| 788 | modification is to calculate the cloud-top pressure as the half-level |
|---|
| 789 | pressure corresponding to the top of the highest model level to contain |
|---|
| 790 | any cloud. Previous versions assigned the cloud-top pressure to the |
|---|
| 791 | full-level pressure of the highest model level to contain any cloud. |
|---|
| 792 | Note the terminology is that "full" level is the pressure corresponding |
|---|
| 793 | to somewhere in the middle of the model level and that "half" level is |
|---|
| 794 | the pressure corresponding to the boundaries of a model level. Thus, |
|---|
| 795 | half levels are staggered relative to full levels. This modification, |
|---|
| 796 | following a suggestion of Tony Del Genio, now obeys the common |
|---|
| 797 | parameterization assumption that where clouds occur, they fill the full |
|---|
| 798 | vertical extent of a model level. Under this assumption, the actual |
|---|
| 799 | cloud-top pressure is at the top of the model level. |
|---|
| 800 | |
|---|
| 801 | Note that "top_height" equal to 2 is not generally used. |
|---|
| 802 | |
|---|
| 803 | 2. Interpolated cloud-top pressure |
|---|
| 804 | |
|---|
| 805 | In the case, "top_height" equals 1 or 3, the cloud-top pressure is |
|---|
| 806 | determined from an infrared brightness-temperature derived cloud-top |
|---|
| 807 | temperature. This involves a step of locating the pressure level on a |
|---|
| 808 | temperature profile which has the radiance-derived cloud-top |
|---|
| 809 | temperature. The modification now determines cloud-top pressure through |
|---|
| 810 | vertical interpolation in log-pressure space of the model's temperature |
|---|
| 811 | profile. Previous versions had determined the cloud-top pressure as the |
|---|
| 812 | full-level pressure of the model level which had a temperature nearest |
|---|
| 813 | the radiance-derived cloud-top temperature. The new method is more |
|---|
| 814 | accurate. |
|---|
| 815 | |
|---|
| 816 | As you might expect, this change has a very minor impact on the pc-tau |
|---|
| 817 | histogram for the generally true condition when model levels are more |
|---|
| 818 | finely spaced in pressure than the 7 cloud-top pressure bins. In some |
|---|
| 819 | applications though, users had examined the values of cloud-top pressure |
|---|
| 820 | directly and found that the default procedure was insufficient. This was |
|---|
| 821 | first noticed by Steve Krueger and Yali Luo (Luo et al. JAS 2005). This |
|---|
| 822 | change can also markedly impact the values of the mean cloud-top |
|---|
| 823 | pressure "meanptop". |
|---|
| 824 | |
|---|
| 825 | 3. Experimental alternative radiance-derived cloud-top pressure |
|---|
| 826 | |
|---|
| 827 | In the case that there is only one tropospheric level in a temperature |
|---|
| 828 | profile with temperature equal to the radiance-derived cloud-top |
|---|
| 829 | temperature, the method to determine cloud-top pressure has a unique |
|---|
| 830 | solution. However, when temperature inversions occur, there are multiple |
|---|
| 831 | solutions for cloud-top pressures. Because many clouds are capped by |
|---|
| 832 | inversions (e.g. marine stratocumulus clouds), this situation arises |
|---|
| 833 | frequently in the atmosphere. |
|---|
| 834 | |
|---|
| 835 | All previous versions of the ISCCP simulator have set the cloud-top |
|---|
| 836 | pressure to be that corresponding to the highest pressure level (i.e. |
|---|
| 837 | lowest altitude level) which has the temperature closest to the |
|---|
| 838 | radiance-derived cloud-top temperature. In normal circumstances, this |
|---|
| 839 | cloud-top pressure would be very close to the actual cloud-top pressure |
|---|
| 840 | in the model. |
|---|
| 841 | |
|---|
| 842 | However, there is abundant evidence (from most recently the new Clousat |
|---|
| 843 | and Calipso data) that ISCCP (and other satellite retrievals involving |
|---|
| 844 | passive visible and infrared radiances) is more likely to set the |
|---|
| 845 | cloud-top pressure in this circumstance closer to the lowest pressure |
|---|
| 846 | level (i.e. highest altitude level) which has the temperature closest to |
|---|
| 847 | the radiance-determined cloud-top temperature. In the case of marine |
|---|
| 848 | stratocumulus clouds underneath at 10K inversion this difference can be |
|---|
| 849 | very large. For example, it might be the difference between a cloud-top |
|---|
| 850 | pressure of ~900 mb and ~750 mb. It is for this reason that Pat Minnis |
|---|
| 851 | (Minnis et al. J. Appl. Met. 1992) derived an alternative technique for |
|---|
| 852 | cloud-top height by scaling the difference between cloud-top and |
|---|
| 853 | sea-surface temperatures by an assumed lapse-rate for the marine |
|---|
| 854 | boundary layer. Indeed, one finds that in marine stratocumulus regions |
|---|
| 855 | that ISCCP reports a lot of cloud in the cloud-top pressure bin between |
|---|
| 856 | 680 and 800 mb. Probably much of this cloud should properly be in the |
|---|
| 857 | 800 mb to the surface cloud-top pressure bin. A recent article (Garay, M. |
|---|
| 858 | J., S. P. de Szoeke, and C. M. Moroney (2008), Comparison of marine |
|---|
| 859 | stratocumulus cloud top heights in the southeastern Pacific retrieved |
|---|
| 860 | from satellites with coincident ship-based observations, J. Geophys. |
|---|
| 861 | Res., 113, D18204, doi:10.1029/2008JD009975) shows that ISCCP seriously |
|---|
| 862 | underestimates the cloud-top pressure under these situations (see Garay |
|---|
| 863 | et al. Figure 2). |
|---|
| 864 | |
|---|
| 865 | However, the purpose of the simulator is to mimic ISCCP data and this an |
|---|
| 866 | important ISCCP error which probably should be mimicked. Thus, as an |
|---|
| 867 | experimental modification, a flag variable "top_height_direction" is |
|---|
| 868 | provided which allows one to choose whether or not to set the cloud-top |
|---|
| 869 | pressure as the highest or lowest pressure for which the interpolated |
|---|
| 870 | temperature profile matches the radiance-derived cloud-top temperature. |
|---|
| 871 | |
|---|
| 872 | The flag variable "top_height_direction" is a new interface variable to |
|---|
| 873 | the isccp_cloud_types subroutine. When "top_height_direction" equals 1, |
|---|
| 874 | the cloud-top pressure corresponds to the highest pressure (i.e. lowest |
|---|
| 875 | altitude) with temperature matching the radiance-derived cloud-top |
|---|
| 876 | temperature. When "top_height_direction" equals 2, the cloud-top |
|---|
| 877 | pressure corresponds to the lowest pressure (i.e. highest altitude) |
|---|
| 878 | level with the matching cloud-top temperature. |
|---|
| 879 | |
|---|
| 880 | All previous versions of the ISCCP simulator have been using the method |
|---|
| 881 | that corresponds to "top_height_direction" equal to 1. This remains the |
|---|
| 882 | recommended default setting. However, if further work (i.e. |
|---|
| 883 | ICARUS-assessment tests by Jay Mace) demonstrates that |
|---|
| 884 | "top_height_direction" equal to 2 would be a better match to the ISCCP |
|---|
| 885 | cloud-top pressures then in the future it may be recommended to use |
|---|
| 886 | "top_height_direction" equal to 2. |
|---|
| 887 | |
|---|
| 888 | _______________________________________________________________________________ |
|---|
| 889 | |
|---|
| 890 | Changes made by Mark Webb from version 3.5 to 3.5.1 |
|---|
| 891 | |
|---|
| 892 | SCOPS separated out into its own subroutine (8/11/06) |
|---|
| 893 | |
|---|
| 894 | _______________________________________________________________________________ |
|---|
| 895 | Changes made by Mark Webb from version 3.4.1 to 3.5 |
|---|
| 896 | |
|---|
| 897 | Version released under LGPL ( GNU Public License ) |
|---|
| 898 | Introduced a new random number generator to allow release |
|---|
| 899 | under LGPL. Results should be statistically equivalent to 3.4 |
|---|
| 900 | Minor changes to the README file on seeding. |
|---|
| 901 | Updated Steve's email address |
|---|
| 902 | _______________________________________________________________________________ |
|---|
| 903 | Changes made by Mark Webb from version 3.3 to 3.4. |
|---|
| 904 | Changes made by Mark Webb from version 3.4 to 3.4.1 |
|---|
| 905 | |
|---|
| 906 | Changes to the README file mainly on guidance for setting NCOL. |
|---|
| 907 | Code exactly as 3.4 |
|---|
| 908 | _______________________________________________________________________________ |
|---|
| 909 | Changes made by Mark Webb from version 3.3 to 3.4. |
|---|
| 910 | |
|---|
| 911 | Default value for attrop changed to 120K, on request from Steve. |
|---|
| 912 | Reference to nlevmax removed from isccp_cloud_types.f - this |
|---|
| 913 | caused a segfault when running the tests under Linux/g77. |
|---|
| 914 | Moved initialisation of tauchk to start of isccp_cloud_types.f |
|---|
| 915 | as it was not being initialised for top_height = 2. |
|---|
| 916 | |
|---|
| 917 | Various minor changes to the README file requested by Steve. |
|---|
| 918 | _______________________________________________________________________________ |
|---|
| 919 | |
|---|
| 920 | Changes made by Mark Webb and Steve Klein from version 3.2 to 3.3. |
|---|
| 921 | |
|---|
| 922 | Converted debug to be an integer value - 0 = no printing, |
|---|
| 923 | non-zero specifies the step with which the printout loops over j. |
|---|
| 924 | |
|---|
| 925 | Added debugcol allow separate activation of box printout. |
|---|
| 926 | |
|---|
| 927 | Modified tropopause diagnosis: |
|---|
| 928 | |
|---|
| 929 | Previously, the code worked by starting at the top of the atmosphere |
|---|
| 930 | and working down, setting the tropopause temperature to the layer |
|---|
| 931 | temperature as long as the layer temperature is greater than in |
|---|
| 932 | the layer below - i.e. the tropopause temperature was the |
|---|
| 933 | temperature of the lowest layer that is in or near to the |
|---|
| 934 | stratosphere. The problem with this is that if the atmosphere |
|---|
| 935 | is isothermal, or if temperature monotonically decreases with |
|---|
| 936 | height, attrop is never set, and the default value of ptrop |
|---|
| 937 | of 50mb is used. |
|---|
| 938 | |
|---|
| 939 | The main effect of this was (in the cases where a tropopause |
|---|
| 940 | was not found ) to set the cloud tops pressures |
|---|
| 941 | for pixels with optical thickness around .3 or less to 50mb. |
|---|
| 942 | This is not thought a serious problem, as most of the cloud |
|---|
| 943 | affected is below the detection threshold for ISCCP anyway. |
|---|
| 944 | |
|---|
| 945 | This version has been modified to diagnose the tropopause as |
|---|
| 946 | the coldest level between 400mb and 50mb. A tropopause will |
|---|
| 947 | always be diagnosed if the inputs have pressure levels |
|---|
| 948 | between these levels. Failing that, ptrop will be set |
|---|
| 949 | to 50Mb, and attrop will be set to 0K. This is safer |
|---|
| 950 | than setting attrop to, say, 200K as the emissivity correction |
|---|
| 951 | for optically thin clouds does not work properly if the |
|---|
| 952 | cloud temperature is lower than that of attrop. |
|---|
| 953 | |
|---|
| 954 | _______________________________________________________________________________ |
|---|
| 955 | |
|---|
| 956 | Changes made by Bryant McAvaney going from version 3.1 to 3.2. |
|---|
| 957 | |
|---|
| 958 | Bryant made the following changes: |
|---|
| 959 | |
|---|
| 960 | renamed: |
|---|
| 961 | |
|---|
| 962 | isccp_cloudtypes.f, test_isccp_cloudtypes.f, test_isccp_cloudtypes.f |
|---|
| 963 | |
|---|
| 964 | to |
|---|
| 965 | |
|---|
| 966 | isccp_cloud_types.f, test_isccp_cloud_types.f, test_isccp_cloud_types.f |
|---|
| 967 | |
|---|
| 968 | to avoid problems when using interactive debugger. |
|---|
| 969 | |
|---|
| 970 | itrop -> itrop(npoints) ( fix for bug in version 3.1 ) |
|---|
| 971 | |
|---|
| 972 | initialised attrop to 200K and itrop to 1 ( as were uninitialised on |
|---|
| 973 | occasions where tropopause code failed to find a tropopause. ) |
|---|
| 974 | |
|---|
| 975 | now only do emcld adjustment to fluxtop if tau(j,ibox) .gt. (tauchk) - |
|---|
| 976 | this aviods floating exceptions when ir inputs are passed with no or v. |
|---|
| 977 | small vis values e.g. at dawn/dusk |
|---|
| 978 | |
|---|
| 979 | removal of ncolmax, nlevmax |
|---|
| 980 | |
|---|
| 981 | added debugcol logical for column printout |
|---|
| 982 | |
|---|
| 983 | modified most of ncolprint loops to work in vector mode |
|---|
| 984 | |
|---|
| 985 | re-ordered write statements under 'debug' to match argument list |
|---|
| 986 | |
|---|
| 987 | initialised boxtau,boxptop,box_cloudy |
|---|
| 988 | |
|---|
| 989 | moved bb emission calc out of ibox loop |
|---|
| 990 | |
|---|
| 991 | added rec2p13 to hold reciprocal of 2.13 |
|---|
| 992 | |
|---|
| 993 | added tauchk to hold -1.*log(0.9999999) value |
|---|
| 994 | |
|---|
| 995 | moved btcmin calc out of ibox loop |
|---|
| 996 | |
|---|
| 997 | _______________________________________________________________________________ |
|---|
| 998 | |
|---|
| 999 | Changes made by Mark Webb in going from Version 3.0 to Version 3.1 |
|---|
| 1000 | |
|---|
| 1001 | ( ** Please note that a bug has been found in this version. |
|---|
| 1002 | The tropopause index itrop was not dimensioned over npoints. |
|---|
| 1003 | This is corrected in version 3.3 ) |
|---|
| 1004 | |
|---|
| 1005 | This version is scientifically equivalent to version 3.0, but |
|---|
| 1006 | is optimised to run more efficiently on vector processors |
|---|
| 1007 | such as the NEC SX-6. It should be bit reproducible with version 3.0. |
|---|
| 1008 | Please let me know if you find a situation where the two versions |
|---|
| 1009 | give difference answers for consistent inputs. |
|---|
| 1010 | |
|---|
| 1011 | To do this I have had to modify isccp_cloudtypes.f to accept |
|---|
| 1012 | vector inputs rather than single column inputs. This version |
|---|
| 1013 | can still be called column by column, ( just set npoints to |
|---|
| 1014 | 1 ), but this is very inefficient on vector architectures. |
|---|
| 1015 | |
|---|
| 1016 | A few new arguments have been added - I have put these at |
|---|
| 1017 | the start of the argument list to make them easier to spot. |
|---|
| 1018 | |
|---|
| 1019 | debug is a logical which, if set to true, tell isccp_cloudtypes |
|---|
| 1020 | to print out lots of diagnostics to unit 6 and unit 9. debug |
|---|
| 1021 | is set to true in test_isccp_cloudtypes.f, and is useful for |
|---|
| 1022 | checking that you are passing all of the relevant arguments |
|---|
| 1023 | in correctly. |
|---|
| 1024 | |
|---|
| 1025 | npoints is the number of grid points in the horizontal that you |
|---|
| 1026 | want to process. Most of the input variables now have npoints |
|---|
| 1027 | as their first array dimension, and most of the inner loops |
|---|
| 1028 | in isccp_cloudtypes loop over this array dimension, (and do |
|---|
| 1029 | vectorise on the sx-6). The larger the value of npoints, the |
|---|
| 1030 | better the performance you are likely to get on a vector |
|---|
| 1031 | processor. The code is not structured to vectorise over |
|---|
| 1032 | loops over ncol/ibox, although a small number of these do. |
|---|
| 1033 | |
|---|
| 1034 | sunlit should be set to 1 for day points and 0 for nighttime |
|---|
| 1035 | points. See the section below on handling sunlit points for a |
|---|
| 1036 | discussion of the related issues. |
|---|
| 1037 | |
|---|
| 1038 | Added sections on setting NCOL, handling sunlit points, and |
|---|
| 1039 | averaging to the 'things to bear in mind' section. |
|---|
| 1040 | _______________________________________________________________________________ |
|---|
| 1041 | |
|---|
| 1042 | Changes made by Steve Klein in going from Version 2.2.1.1 to Version 3.0 |
|---|
| 1043 | |
|---|
| 1044 | *** Please note that moving to this version changes the results given |
|---|
| 1045 | by the code *** |
|---|
| 1046 | |
|---|
| 1047 | 1. Based upon e-mail correspondance with Bill Rossow, the minimum visible |
|---|
| 1048 | optical thickness ISCCP is assumed to detect is set to 0.3. Previous |
|---|
| 1049 | versions used 0.1. |
|---|
| 1050 | |
|---|
| 1051 | 2. Provisions haven been made for an IR-only cloud top pressure adjustment. This |
|---|
| 1052 | permits comparison to ISCCP data at night. This is done by adding a third |
|---|
| 1053 | option to top_height which will be the IR-only adjusted top option. Note |
|---|
| 1054 | that the previous adjusted option used the visible optical depth to adjust |
|---|
| 1055 | the cloud emissivity. NOTE that one must still pass the visible optical |
|---|
| 1056 | depth to the code even if one wishes IR-only calculations. This is done |
|---|
| 1057 | primarily to count the abundance of cloud types in different visible optical |
|---|
| 1058 | thickness categories. Comparison to IR-only ISCCP data is accomplished by |
|---|
| 1059 | summing over all categories of optical thickness for a given cloud top |
|---|
| 1060 | pressure interval. |
|---|
| 1061 | |
|---|
| 1062 | 3. Previous versions of the code assumed that tau-ir = tau_vis / 2.13 . |
|---|
| 1063 | Note that 2.13 is the ice microphysics conversion factor. An error comes |
|---|
| 1064 | from using this factor for liquid phase clouds where the appropriate factor |
|---|
| 1065 | is 2.56. This has been accomodated by a small iteration loop after the |
|---|
| 1066 | calculation of the cloud brightness temperature. If the cloud brightness |
|---|
| 1067 | temperature is greater than 260K (ISCCP's ice cloud threshold) then the |
|---|
| 1068 | calculation of cloud brightness temperature is repeated using 2.56 instead |
|---|
| 1069 | of 2.13. |
|---|
| 1070 | |
|---|
| 1071 | The next minor correction is based upon a more careful reading of page 86 of |
|---|
| 1072 | the ISCCP documentation (available from the ISCCP web site): |
|---|
| 1073 | |
|---|
| 1074 | Rossow, W.B., A.W. Walker, D.E. Beuschel, and M.D. Roiter, 1996: International |
|---|
| 1075 | Satellite Cloud Climatology Project (ISCCP) Documentation of New Cloud Datasets. WMO/TD-No. 737, World Meteorological |
|---|
| 1076 | Organization, 115 pp. |
|---|
| 1077 | |
|---|
| 1078 | 4. Following the calculation of TRANS-MAX described towards the bottom of page |
|---|
| 1079 | 86, cloud top pressure is set to the tropopause pressure if tau < taumin |
|---|
| 1080 | based upon transmax. In previous versions though, conversion of taumin from |
|---|
| 1081 | IR-tau to VIS-tau before comparison to tau(ibox) was overlooked. Also at |
|---|
| 1082 | this point, the cloud top temperature is assumed to be 5 K colder than |
|---|
| 1083 | the tropopause temperature. Note that the documentation says the "cloud top |
|---|
| 1084 | pressure equals tropopause pressure". |
|---|
| 1085 | |
|---|
| 1086 | |
|---|
| 1087 | ============================================================================ |
|---|
| 1088 | |
|---|
| 1089 | Changes made by Mark Webb in going from Version 2.2 to Version 2.2.1.1 |
|---|
| 1090 | |
|---|
| 1091 | A very minor change was applied to test_isccp_cloudtypes.f to |
|---|
| 1092 | avoid a problem with some stricter compilers which do not allow |
|---|
| 1093 | constants arguments to be overwritten in the called routine. This |
|---|
| 1094 | was happening because I was passing a constant 50 into the seed |
|---|
| 1095 | argument of isccp_cloudtypes instead of the variable seed. |
|---|
| 1096 | |
|---|
| 1097 | Minor changes also made to Makefile and test_isccp_cloudtypes.ksh |
|---|
| 1098 | to remove the need for . in $PATH. |
|---|
| 1099 | |
|---|
| 1100 | Mark Webb 2/7/2002 |
|---|
| 1101 | |
|---|
| 1102 | ============================================================================ |
|---|
| 1103 | |
|---|
| 1104 | Changes made by Mark Webb in going from Version 2.1 to Version 2.2 |
|---|
| 1105 | |
|---|
| 1106 | 1) seed is now passed in as an argument. This makes it |
|---|
| 1107 | easier for the user to follow the advice in the README |
|---|
| 1108 | file wrt setting different seed values for subsequent calls. |
|---|
| 1109 | 2) a couple of lines were > 72 chars long, which gave errors |
|---|
| 1110 | with my compiler. |
|---|
| 1111 | 3) use of formatted write statements to print out values of |
|---|
| 1112 | totalcldarea, meanptop, meantaucld ( unformatted writes |
|---|
| 1113 | make the tests fail with different compilers as they |
|---|
| 1114 | output different white space characters. I can't ignore |
|---|
| 1115 | white space in the comparison because this could mask |
|---|
| 1116 | errors in the overlap output. ) |
|---|
| 1117 | 4) changes to the formats of some other write statements |
|---|
| 1118 | to reduce false errors with different rounding characteristics |
|---|
| 1119 | in formatting on different platforms. |
|---|
| 1120 | 5) the binary files containing the enery weightings only work on |
|---|
| 1121 | some platforms - I have added formatted versions that can be used |
|---|
| 1122 | as alternatives - specify readbinary=.false. in test_isccp_cloudtypes.f. |
|---|
| 1123 | |
|---|
| 1124 | Mark Webb 26/6/2002 |
|---|
| 1125 | |
|---|
| 1126 | ============================================================================ |
|---|
| 1127 | |
|---|
| 1128 | Changes made by Steve Klein in going from Version 2.0 to Version 2.1 |
|---|
| 1129 | |
|---|
| 1130 | The code was modified so that the primary subroutine, ISCCP_CLOUD_TYPES, |
|---|
| 1131 | now returns the fraction of columns that contain cloud ('totalcldarea'), |
|---|
| 1132 | the mean cloud top pressure in the cloudy portion of the grid box ('meanptop'), |
|---|
| 1133 | and the energy-weighted mean optical thickness ('meantaucld'). Note that |
|---|
| 1134 | if the grid box contains no clouds whatsoever that meanptop and meantaucld |
|---|
| 1135 | are both zero. |
|---|
| 1136 | |
|---|
| 1137 | In addition, the code now returns the output on a column by column basis |
|---|
| 1138 | of the cloud top pressure ('boxptop') and optical depth ('boxtau'). If |
|---|
| 1139 | no cloud exists in the column then both these variables are zero. |
|---|
| 1140 | |
|---|
| 1141 | In computing the energy-weighted mean optical thickness, the tables |
|---|
| 1142 | used by ISCCP are applied. These tables are in binary files 'tautab.bin' |
|---|
| 1143 | and 'invtau.bin' supplied in the tar file. Note that the size of the |
|---|
| 1144 | invtau vector is 45021, rather large. These binary files are read by |
|---|
| 1145 | the test_isccp_cloudtypes.f and passed as new input arguments to |
|---|
| 1146 | ISCCP_CLOUD_TYPES. |
|---|
| 1147 | |
|---|
| 1148 | The 'stdout.expected' file is modified from that of version 2.0 in that |
|---|
| 1149 | the additional fields output by ISCCP_CLOUD_TYPES (totalcldarea, meanptop, |
|---|
| 1150 | meantaucld, boxtau, boxptop) are added. Apart from the additions the |
|---|
| 1151 | stdout.expected file is identical to that in version 2.0. |
|---|
| 1152 | |
|---|
| 1153 | ============================================================================ |
|---|
| 1154 | |
|---|
| 1155 | What's new in 2.0 since 1.17.1.1: |
|---|
| 1156 | |
|---|
| 1157 | o No functional changes |
|---|
| 1158 | o The tests can now be run using 'make test' |
|---|
| 1159 | o There is now a README file |
|---|
| 1160 | o All write statements in the tests should use formatted I/O, |
|---|
| 1161 | which makes it easier to check whether the tests have passed |
|---|
| 1162 | on different platforms. |
|---|
| 1163 | |
|---|
| 1164 | _______________________________________________________________________________ |
|---|
| 1165 | |
|---|
| 1166 | Version 1.17.1.1 was made available to a few people by Steve in |
|---|
| 1167 | a tar file called new_isccp_mark_steve.tar. Note that the version |
|---|
| 1168 | number in isccp_cloudtypes.f is 1.16 although this version is not |
|---|
| 1169 | the same as version 1.16. |
|---|
| 1170 | |
|---|
| 1171 | The contents were: |
|---|
| 1172 | |
|---|
| 1173 | $ tar tvf new_isccp_mark_steve.tar |
|---|
| 1174 | rwxr-xr-x 1116/77 0 Oct 28 18:57 1999 isccp_mark_steve/ |
|---|
| 1175 | rw-r--r-- 1116/77 389120 Oct 28 18:59 1999 isccp_mark_steve/Makefile |
|---|
| 1176 | rw-r--r-- 1116/77 2595 Aug 15 18:02 1999 isccp_mark_steve/coldecomp.steve.data |
|---|
| 1177 | rw-r--r-- 1116/77 4534 Aug 14 15:57 1999 isccp_mark_steve/input.data |
|---|
| 1178 | rw-r--r-- 1116/77 870 Aug 14 15:40 1999 isccp_mark_steve/input.data.mark |
|---|
| 1179 | rw-r--r-- 1116/77 4534 Aug 14 15:56 1999 isccp_mark_steve/input.data.steve |
|---|
| 1180 | rw-r--r-- 1116/77 34106 Oct 28 18:55 1999 isccp_mark_steve/isccp_cloudtypes.f |
|---|
| 1181 | rw-r--r-- 1116/77 325816 Aug 15 17:50 1999 isccp_mark_steve/output.steve.data |
|---|
| 1182 | rw-r--r-- 1116/77 601 Aug 14 16:06 1999 isccp_mark_steve/ran0.f |
|---|
| 1183 | rw-r--r-- 1116/77 442 Aug 5 16:25 1999 isccp_mark_steve/rcs_ids |
|---|
| 1184 | rw-r--r-- 1116/77 3045 Aug 15 18:19 1999 isccp_mark_steve/test_isccp_cloudtypes.f |
|---|
| 1185 | |
|---|
| 1186 | What was new in 1.17.1.1 compared to 1.17. |
|---|
| 1187 | |
|---|
| 1188 | o No functional changes |
|---|
| 1189 | o Steve's changes to various boolean expressions to improve portability. |
|---|
| 1190 | |
|---|
| 1191 | _______________________________________________________________________________ |
|---|
| 1192 | |
|---|
| 1193 | What was new in 1.17 compared to 1.16. |
|---|
| 1194 | |
|---|
| 1195 | o new code to handles water vapour |
|---|
| 1196 | o uses a better tau - emissivity relationship |
|---|
| 1197 | o notes cloud amounts with tau < 0.1 |
|---|
| 1198 | |
|---|
| 1199 | Version 1.17 was distributed by Steve in a tar file which was most likely |
|---|
| 1200 | called isccp_mark_steve.tar ( I don't have a copy or the tarfile! ). |
|---|
| 1201 | Note that the version number in isccp_cloudtypes.f is also 1.16 although this |
|---|
| 1202 | version is not the same as version 1.16. This version of isccp_cloudtypes.f |
|---|
| 1203 | is 33348 bytes long. |
|---|
| 1204 | |
|---|
| 1205 | _______________________________________________________________________________ |
|---|
| 1206 | |
|---|
| 1207 | Version 1.16 was distributed by Mark in a file called isccp_mark.tar |
|---|
| 1208 | ( as were some previous versions ). This was in August 1999 |
|---|
| 1209 | |
|---|
| 1210 | The contents were: |
|---|
| 1211 | |
|---|
| 1212 | $ tar tvf isccp_mark.tar |
|---|
| 1213 | r--r--r-- 275/107 28516 Aug 3 17:20 1999 isccp_mark/isccp_cloudtypes.f |
|---|
| 1214 | r--r--r-- 275/107 2769 Aug 5 16:22 1999 isccp_mark/test_isccp_cloudtypes.f |
|---|
| 1215 | r--r--r-- 275/107 587 Jul 29 10:51 1999 isccp_mark/ran0.f |
|---|
| 1216 | r--r--r-- 275/107 791 Aug 5 16:24 1999 isccp_mark/input.data |
|---|
| 1217 | r--r--r-- 275/107 432 Aug 3 15:57 1999 isccp_mark/Makefile |
|---|
| 1218 | rw-r--r-- 275/107 442 Aug 5 16:25 1999 isccp_mark/rcs_ids |
|---|
| 1219 | |
|---|
| 1220 | What was new in 1.16 compared to 1.13. |
|---|
| 1221 | |
|---|
| 1222 | o correct treatment of top_height=2 |
|---|
| 1223 | o correct treatment of convective cloud in random & max overlap cases |
|---|
| 1224 | o correct treatment of stratiform cloud above convective cloud |
|---|
| 1225 | |
|---|
| 1226 | _______________________________________________________________________________ |
|---|
| 1227 | |
|---|
| 1228 | Version 1.13 was distributed by Mark in a file called isccp_mark.tar |
|---|
| 1229 | in July 1999. Note that this version was still in development and |
|---|
| 1230 | had the following problems which were ironed out later: |
|---|
| 1231 | |
|---|
| 1232 | o doesn't work for top_height=2 |
|---|
| 1233 | o convective cloud not treated properly in random or max overlap cases |
|---|
| 1234 | o stratiform cloud above convective cloud not quite right |
|---|
| 1235 | |
|---|
| 1236 | -rw-r--r-- 1 hadmw mec 40960 Mar 20 09:53 isccp_mark.tar |
|---|
| 1237 | |
|---|
| 1238 | $ tar tvf isccp_mark.tar |
|---|
| 1239 | r--r--r-- 275/107 27454 Jul 29 10:48 1999 isccp_mark/isccp_cloudtypes.f |
|---|
| 1240 | r--r--r-- 275/107 3931 Jul 29 10:54 1999 isccp_mark/test_isccp_cloudtypes.f |
|---|
| 1241 | r--r--r-- 275/107 587 Jul 29 10:51 1999 isccp_mark/ran0.f |
|---|
| 1242 | r--r--r-- 275/107 1619 Jul 29 11:07 1999 isccp_mark/input.data |
|---|
| 1243 | r--r--r-- 275/107 582 Jul 29 11:36 1999 isccp_mark/Makefile |
|---|
| 1244 | rw-r--r-- 275/107 441 Jul 29 11:36 1999 isccp_mark/rcs_ids |
|---|
| 1245 | |
|---|
| 1246 | What was new in 1.13 compared to 1.1. |
|---|
| 1247 | |
|---|
| 1248 | o Various changes to make FORTRAN code consistent with Mark's PV-Wave |
|---|
| 1249 | including: |
|---|
| 1250 | o support for convective as well as stratiform clouds in the same gridbox |
|---|
| 1251 | o pseudo-random sampling method to fix 'left fill' problem |
|---|
| 1252 | |
|---|
| 1253 | _______________________________________________________________________________ |
|---|
| 1254 | |
|---|
| 1255 | Version 1.1 |
|---|
| 1256 | |
|---|
| 1257 | Steve's box code, as used in Klein & Jacob 1999. Received by Mark in July 1999. |
|---|
| 1258 | isccp_cloudtypes.f is 22230 bytes long. |
|---|
| 1259 | |
|---|
| 1260 | This version doesn't support convective clouds, and suffers from the 'left fill' |
|---|
| 1261 | problem. |
|---|
| 1262 | |
|---|
| 1263 | _______________________________________________________________________________ |
|---|
| 1264 | |
|---|
| 1265 | 7. Some other issues to consider |
|---|
| 1266 | --------------------------------- |
|---|
| 1267 | |
|---|
| 1268 | Steve's email accompanying distribution of release 1.1 in Jan 1999. |
|---|
| 1269 | |
|---|
| 1270 | > NOTES/QUESTIONS/ISSUES TO BE RESOLVED BY THE GROUP AS A WHOLE |
|---|
| 1271 | > |
|---|
| 1272 | > 1. Following our discussion, we have agreed that the optical depth used |
|---|
| 1273 | > should be exactly the same as that used in the host GCM. Thus the |
|---|
| 1274 | > program takes as input the optical depth in each model level. OK? |
|---|
| 1275 | > |
|---|
| 1276 | > 2. The program takes each vertical profile of cloud cover and subdivides |
|---|
| 1277 | > an atmospheric column into homogenous columns. The suggested number of |
|---|
| 1278 | > columns is 100. It is important to note, that the cloud COVER not |
|---|
| 1279 | > cloud FRACTION of each model level is required as input. For example |
|---|
| 1280 | > the GISS GCM assumes something that the clouds do not fill the grid |
|---|
| 1281 | > box in the vertical completely (at least they did in DelGenio's 1996 |
|---|
| 1282 | > paper). They will need to convert their cloud fraction to a cloud cover |
|---|
| 1283 | > before input. |
|---|
| 1284 | > |
|---|
| 1285 | > 3. Cloud top pressure is determined by 2 methods. If top_height is set |
|---|
| 1286 | > to 2, then the cloud top pressure is set to be the mean pressure of the |
|---|
| 1287 | > highest cloudy level of each sub-column that contains clouds. This is |
|---|
| 1288 | > done in the line: |
|---|
| 1289 | > |
|---|
| 1290 | > ptop(ibox)=pfull(ilev) |
|---|
| 1291 | > |
|---|
| 1292 | > A choice is made here in that one could use the half-pressure level at |
|---|
| 1293 | > the top of a given pressure level. I suppose users will customize. OK? |
|---|
| 1294 | > |
|---|
| 1295 | > 4. The second method for determining cloud top pressure (used it top_height |
|---|
| 1296 | > is set to 1), computes an approximate 11 micron radiance and then follows |
|---|
| 1297 | > ISCCP procedures (assuming a single level of cloud) to determine the cloud |
|---|
| 1298 | > top pressure. To do this the program requires more input including: |
|---|
| 1299 | > the model's cloud 11 micron emissivity in each level, the surface skin |
|---|
| 1300 | > temperature, the air temperature, and the surface's 11 micron emissivity. |
|---|
| 1301 | > Questions that arise here are: |
|---|
| 1302 | > |
|---|
| 1303 | > (a) Should we include a rough simulation of the water vapor continuum |
|---|
| 1304 | > as is done in Yu et al., Climate Dynamics, 1996, pages 389-401.? |
|---|
| 1305 | > If we do, we will need the specific humidity of water vapor in each |
|---|
| 1306 | > level, and a formula for the continuum. I would use the Roberts |
|---|
| 1307 | > formula used in Yu et al. which is much simpler than the one used |
|---|
| 1308 | > by ISCCP (see D level documentation page 77). |
|---|
| 1309 | > (b) If data is not easily available, should we assume a longwave |
|---|
| 1310 | > emissivity for the skin or a temperature relationship between the |
|---|
| 1311 | > model's temperature and the skin temperature? |
|---|
| 1312 | |
|---|
| 1313 | ( Note Steve added the continuum treatment at version 1.17 ) |
|---|
| 1314 | |
|---|
| 1315 | > 5. What is the minimum optical depth we should assume ISCCP clouds can detect? |
|---|
| 1316 | > 0.1 (the default of the program) or 0.2? Should we create (not done in |
|---|
| 1317 | > the current program) a separate tau category for all the clouds with tau |
|---|
| 1318 | > less than taumin. ISCCP experts opinions are most needed here. |
|---|
| 1319 | |
|---|
| 1320 | ( also done at 1.17 ) |
|---|
| 1321 | |
|---|
| 1322 | > 6. To distribute the clouds, you need to have an overlap assumption. Currently |
|---|
| 1323 | > the program has 3 options: maximum, random, and maximum-random. The |
|---|
| 1324 | > program default is max-random, so that to use the other programs you will |
|---|
| 1325 | > need to edit the program and uncomment the alternative line of code to |
|---|
| 1326 | > change the overlap assumption. Don't forget to comment the line of code |
|---|
| 1327 | > for max-random then. (Search the program for 'CLOUD OVERLAP |
|---|
| 1328 | > ASSUMPTION' to find these lines of code) |
|---|
| 1329 | > |
|---|
| 1330 | > 7. Horizontal Cloud Inhomogeneity. Currently the program distributes the |
|---|
| 1331 | > cloud optical depth (and longwave emissivity if used) evenly in the hor- |
|---|
| 1332 | > izontal. Users may wish to do other things here depending on their |
|---|
| 1333 | > model's assumptions. Note that if you change this, you have to make |
|---|
| 1334 | > an assumption about the vertical correlation of the cloud inhomogeneity |
|---|
| 1335 | > (e.g. are the thicker parts of the cloud in level i, directly beneath |
|---|
| 1336 | > the thicker parts of the cloud in level i+1). The line of code to change |
|---|
| 1337 | > for optical depth is: |
|---|
| 1338 | > |
|---|
| 1339 | > do 16 ibox=1,ncol |
|---|
| 1340 | > tau(ibox)=tau(ibox)+real(BOX(ilev,ibox))*dtau(ilev) |
|---|
| 1341 | > 16 continue |
|---|
| 1342 | > |
|---|
| 1343 | > where ibox is the index variable for the number of columns. |
|---|
| 1344 | > The three places the longwave emissivity is used (variable name dem) |
|---|
| 1345 | > will also need to be changed if you decide to have horizontal cloud |
|---|
| 1346 | > inhomogeneity. |
|---|
| 1347 | > |
|---|
| 1348 | > Cheers, |
|---|
| 1349 | > Steve |
|---|
| 1350 | |
|---|
| 1351 | _______________________________________________________________________________ |
|---|