source: LMDZ6/branches/LMDZ-COSP/libf/phylmd/cospv2/unit_testing/icarus-scops-4.1-bsd/README @ 5917

Last change on this file since 5917 was 5917, checked in by idelkadi, 6 hours ago

Nouveau répertoire cospv2 avec la même structure offline

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