Plans for CFMIP-2

Meetings

CFMIP observational simulator package (COSP)

ISCCP simulator

Publications

FAQ

CFMIP-1

Diagnostic Subprojects

Experimental Protocols

Data Requirements

Project Extensions

Participating Groups

Data Available

Change History



Use of the ISCCP simulator code to diagnose cloud diagnostics from models


The ISCCP simulator is a FORTRAN77 code that can be used to take cloud and atmosphere information from atmospheric models and convert it into something that is comparable to data from the ISCCP. It was written by Steve Klein ( sak@gfdl.gov ) and Mark Webb (mark.webb@metoffice.com) and is available for download from the GCSS dime site http://gcss-dime.giss.nasa.gov/simulator.html .

There are two options for producing the ISCCP diagnostics from your model.

Running offline - the first is to save instantaneous 'history' output of the relevant cloud, humidity and temperature variables (plus a lit points mask) from your model, and to run the simulator 'offline' on these. The results can be averaged and submitted along with the other more standard averaged quantities. This is the way the the simulator is usually run at first.

Running in line - calling the code directly from the model can take a while to get working, but once in place makes producing the ISCCP diagnostics for a range of integrations much easier. The simulator is now running in models at the Hadley Centre, NCAR, BMRC and CSU.

The code takes inputs the following inputs:

INTEGER npoints ! number of model points in the horizontal
INTEGER npoints ! number of model points in the horizontal
INTEGER nlev ! number of model levels in column
INTEGER ncol ! number of subcolumns
INTEGER sunlit(npoints) ! 1 for day points, 0 for night time
INTEGER seed(npoints) ! seed value for random number generator ( see Numerical Recipes Chapter 7)
REAL pfull(npoints,nlev) ! pressure of full model levels (Pascals) (pfull(npoints,1) is top level of model; pfull(npoints,nlev) is bottom level of model)
REAL phalf(npoints,nlev+1) ! pressure of half model levels (Pascals) (phalf(npoints,1) is top of model; phalf(npoints,nlev+1) is the surface pressure)
REAL qv(npoints,nlev) ! water vapor specific humidity (kg vapor/ kg air) on full model levels
REAL cc(npoints,nlev) ! input total cloud cover in each model level (fraction) (Note: This is the horizonatal area of each grid box covered by clouds)
REAL conv(npoints,nlev) ! input convective cloud cover in each model level (fraction) (Note: This is the horizontal area of each grid box covered by convective clouds)
REAL dtau_s(npoints,nlev) ! mean 0.67 micron optical depth of stratiform clouds in each model level (Note: this the cloud optical depth of only the cloudy part of the grid box, it is not weighted with the 0 cloud optical depth of the clear part of the grid box)
REAL dtau_c(npoints,nlev) ! mean 0.67 micron optical depth of convective clouds in each model level. Same note applies as in dtau_s.
INTEGER overlap ! overlap type (1=max, 2=rand, 3=max/rand)
INTEGER top_height ! 1 = adjust top height using both a computed infrared brightness temperature and the visible optical depth to adjust cloud top pressure. (Note that this calculation is most appropriate to compare to ISCCP data during sunlit hours.)
REAL tautab(0:255) ! ISCCP table for converting count value to optical thickness ( Note not required for CFMIP )
INTEGER invtau(-20:45000) ! ISCCP table for converting optical thickness to count value ( Note not required for CFMIP )
REAL skt(npoints) ! skin Temperature (K)
REAL emsfc_lw ! 10.5 micron emissivity of surface (fraction)
REAL at(npoints,nlev) ! temperature in each model level (K)
REAL dem_s(npoints,nlev) ! 10.5 micron longwave emissivity of stratiform clouds in each model level. Same note applies as in dtau_s.
REAL dem_c(npoints,nlev) ! 10.5 micron longwave emissivity of convective clouds in each model level. Same note applies as in dtau_s.

If you do not have separate convective clouds in your model, the convective cloud inputs can be set to zero values.

Outputs required for CFMIP - the 49 fields in the FQ_ISCCP array.

Also, for CFMIP, the tautab and invtau tables input tables are not required - these inputs can be commented out along with the calculation of the the output variables totalcldarea, meanptop, meantaucld, boxtau, boxptop which are not required for CFMIP.

 


Points to be aware of when using the code

1) Are you running a correct version? CFMIP requires the latest version (3.4). This version has been optimised for vector architectures but should run reasonably efficiently on other architectures.

NCOL sets the sample size within the gridbox and should be set bearing in mind the amount of averaging you will be doing on your outputs and the frequency with which you run the simulator on your model's instantaneous cloud data.

The rule of thumb is NCOL=100*calling freq in hours / averaging period in days. For instance:

Averaging period I.S. calling frequency NCOL
Monthly 3 hourly 10= 100*3/30
Monthly every 15 hrs 50 = 100*15/30
Daily 3 hourly 300 = 100*3/1

*WARNING* Running with NCOL < 10 is not recommended!

Please note that the README file at version 3.4 is slightly out of date in this regard.

2) Set top_height=1 for best comparisons with ISCCP IR-VIS.

3) Setting the seed correctly - the simulator requires a seed for

the random number generator - it is important to set this correctly

( see the README for details )

4) You are strongly advised to check the results against your total cloud amount. This can be done by adding up all of the elements of the fq_isccp array and comparing with your model's diagnosis of total cloud amount. If you do not understand the reasons for any discrepancies ( e.g. all vs sunlit points ) your ISCCP diagnostics may not be valid.

5) Averaging of outputs from the ISCCP simulator.

It is important to be careful when averaging the outputs from the IS as some variables are output only on sunlit points. The way that I do this is to average the outputs as they come out, and also to average the values of the sunlit variable ( 0 = night, 1 = day ) ( note that the average needs to be a REAL although sunlit is an INTEGER.) The true average of the variables output on sunlit points can later be calculated by dividing the variable average by the average of the sunlit indicator. An alternative approach is to set the nighttime points in the daytime only diagnostics to some sort of missing data indicator (not 0 though!) and average using some code that understands this.


Naming convention for ISCCP variables.

An extra naming convention will be required for the ISCCP diagnostics - it has been proposed that it should be:

pc1tau0

pc1tau1

pc1tau2

pc1tau3

....

pc7tau6

pc7tau6

where pc1tau0 = pc<180; 0<tau<taumin

pc1tau1 = pc<180;taumin<tau<1.3

pc1tau2 = pc<180; 1.3<tau<3.6

....

pc7tau5 = 800<pc ; 23<tau<60

pc7tau6 = 800<pc ; 60<tau