Skip to content

COSP2 in CESM2 Guidance

dustinswales edited this page May 12, 2020 · 35 revisions

At this time, COSP2 has been implemented with CESM2/CAM6 physics and released to the public. Here we provide answers to some frequently asked questions. COSP2/CESM2 contacts are Jennifer Kay (University of Colorado/CIRES), Dustin Swales (University of Colorado/CIRES) and Brian Medeiros (NCAR).

What is the easiest way to run COSP within CAM and look at COSP diagnostics using the AMWG diagnostics package? The instructions below assume you are running on Cheyenne but steps will be similar on other supercomputers.

  1. Get the CESM2 code from github and check out the externals (including CAM with COSP2)
    git clone https://github.com/ESCOMP/cesm.git cesm2
    cd cesm2
    ./manage_externals/checkout_externals
  2. Create the case and go to your case directory
    cd cime/scripts
    ./create_newcase --case /glade/u/home/$USER/$CASE_NAME --compset B1850 --res f09_g17
    cd /glade/u/home/$USER/$CASE_NAME
  1. Configure CAM so that you compile with COSP
    ./xmlchange CAM_CONFIG_OPTS="-phys cam6 -co2_cycle -cosp"
  2. Set up the case
    ./cesm_setup
  3. Edit the CAM namelist by adding text to user_nl_cam to run/configure COSP. The simplest option is to run with cosp_amwg set to true. With this setting in the CAM namelist, you will run the radar, lidar, modis, misr and isccp simulators, and save the monthly COSP outputs needed for the AMWG diagnostics package in the CAM h0 history files.
    cosp_amwg=.true.
    Note that setting cosp_amwg=.true. is the equivalent of setting the following CAM namelist options:
    cosp_histfile_num = 1
    cosp_lisccp_sim = .true.
    cosp_lradar_sim = .true.
    cosp_llidar_sim = .true.
    cosp_lmisr_sim = .true.
    cosp_lmodis_sim = .true.
    cosp_nradsteps = 3
    cosp_ncolumns = 10
    A complete list of COSP-related CAM namelist options is provided below.
  4. Build the model and Run CESM for at least one year including months needed for DJF averaging.
    qcmd -- ./case.build
    ./xmlchange STOP_OPTION="nmonths",STOP_N=1
    ./xmlchange REST_N=1,REST_OPTION="nmonths",RESUBMIT=0,CONTINUE_RUN=FALSE
    ./xmlchange PROJECT=$PROJECTCODE,JOB_WALLCLOCK_TIME="01:00:00",JOB_QUEUE="regular"
    ./case.submit
  5. Run the latest version of the AMWG Diagnostics Package on your outputs.

What COSP2 outputs available in CESM2/CAM6?
Note all of these outputs are defined in the CAM/COSP2 interface (…/components/cam/src/physics/cam/cospsimulator_intr.F90).
Variables are listed as CAMHISTNAME,dimensions,units,long_name.
CALIPSO
'CLDLOW_CAL',horiz_only,'percent','Calipso Low-level Cloud Fraction'
'CLDMED_CAL',horiz_only,'percent','Calipso Mid-level Cloud Fraction'
'CLDHGH_CAL',horiz_only,'percent','Calipso High-level Cloud Fraction'
'CLDTOT_CAL',horiz_only,'percent','Calipso Total Cloud Fraction'
'CLD_CAL',(/'cosp_ht'/),'percent','Calipso Cloud Fraction (532 nm)'
'RFL_PARASOL',(/'cosp_sza'/),'fraction','PARASOL-like mono-directional reflectance ' 'CFAD_SR532_CAL',(/'cosp_sr','cosp_ht'/),'fraction','Calipso Scattering Ratio CFAD (532 nm)'
'MOL532_CAL',(/'lev'/),'m-1sr-1','Calipso Molecular Backscatter (532 nm) '
'ATB532_CAL',(/'cosp_scol','lev'/),'no_unit_log10(x)','Calipso Attenuated Total Backscatter (532 nm) in each Subcolumn'
'CLD_CAL_LIQ', (/'cosp_ht'/), 'percent', 'Calipso Liquid Cloud Fraction'
'CLD_CAL_ICE', (/'cosp_ht'/), 'percent', 'Calipso Ice Cloud Fraction'
'CLD_CAL_UN', (/'cosp_ht'/),'percent', 'Calipso Undefined-Phase Cloud Fraction'
'CLD_CAL_TMP', (/'cosp_ht'/), 'percent', 'NOT SURE WHAT THIS IS Cloud Fraction'
'CLD_CAL_TMPLIQ', (/'cosp_ht'/), 'percent', 'NOT SURE WHAT THIS IS Cloud Fraction'
'CLD_CAL_TMPICE', (/'cosp_ht'/), 'percent', 'NOT SURE WHAT THIS IS Cloud Fraction'
'CLD_CAL_TMPUN', (/'cosp_ht'/), 'percent', 'NOT SURE WHAT THIS IS Cloud Fraction'
'CLDTOT_CAL_ICE', horiz_only,'percent','Calipso Total Ice Cloud Fraction'
'CLDTOT_CAL_LIQ', horiz_only,'percent','Calipso Total Liquid Cloud Fraction'
'CLDTOT_CAL_UN',horiz_only,'percent','Calipso Total Undefined-Phase Cloud Fraction'
'CLDHGH_CAL_ICE',horiz_only,'percent','Calipso High-level Ice Cloud Fraction'
'CLDHGH_CAL_LIQ',horiz_only,'percent','Calipso High-level Liquid Cloud Fraction'
'CLDHGH_CAL_UN',horiz_only,'percent','Calipso High-level Undefined-Phase Cloud Fraction'
'CLDMED_CAL_ICE',horiz_only,'percent','Calipso Mid-level Ice Cloud Fraction'
'CLDMED_CAL_LIQ',horiz_only,'percent','Calipso Mid-level Liquid Cloud Fraction'
'CLDMED_CAL_UN',horiz_only,'percent','Calipso Mid-level Undefined-Phase Cloud Fraction'
'CLDLOW_CAL_ICE',horiz_only,'percent','Calipso Low-level Ice Cloud Fraction'
'CLDLOW_CAL_LIQ',horiz_only,'percent','Calipso Low-level Liquid Cloud Fraction'
'CLDLOW_CAL_UN',horiz_only,'percent','Calipso Low-level Undefined-Phase Cloud Fraction'
CALIPSO - coming soon, pending review/fix from R. Guzman/D. Swales
!'CLDOPQ_CAL',horiz_only,'percent','CALIPSO Opaque Cloud Cover'
!'CLDTHN_CAL',horiz_only,'percent','CALIPSO Thin Cloud Cover'
!'CLDZOPQ_CAL',horiz_only,'m','CALIPSO z_opaque Altitude'
!'CLDOPQ_CAL_2D',(/'cosp_ht'/),'percent', 'CALIPSO Opaque Cloud Fraction'
!'CLDTHN_CAL_2D',(/'cosp_ht'/),'percent', 'CALIPSO Thin Cloud Fraction'
!'CLDZOPQ_CAL_2D',(/'cosp_ht'/),'percent', 'CALIPSO z_opaque Fraction'
!'OPACITY_CAL_2D',(/'cosp_ht'/),'percent', 'CALIPSO opacity Fraction'
!'CLDOPQ_CAL_TMP',horiz_only,'K','CALIPSO Opaque Cloud Temperature'
!'CLDTHN_CAL_TMP',horiz_only,'K','CALIPSO Thin Cloud Temperature'
!'CLDZOPQ_CAL_TMP',horiz_only,'K','CALIPSO z_opaque Temperature'
!'CLDOPQ_CAL_Z',horiz_only,'m','CALIPSO Opaque Cloud Altitude'
!'CLDTHN_CAL_Z',horiz_only,'m','CALIPSO Thin Cloud Altitude'
!'CLDTHN_CAL_EMIS',horiz_only, '1','CALIPSO Thin Cloud Emissivity'
!'CLDOPQ_CAL_SE',horiz_only,'m', 'CALIPSO Opaque Cloud Altitude wrt surf.-elev.'
!'CLDTHN_CAL_SE', horiz_only,'m','CALIPSO Thin Cloud Altitude wrt to surf.-elev.'
!'CLDZOPQ_CAL_SE',horiz_only,'m','CALIPSO z_opaque Altitude wrt to surf.-elev.'
CloudSat
'DBZE_CS',(/'cosp_scol','lev'/),'dBZe',' Radar dBZe (94 GHz) in each Subcolumn'
CloudSat - working in CAM branch (cosp2_cam6_1_027), soon released in CESM2 'CS_NOPRECIP',horiz_only,'1','CloudSat No Rain Fraction'
'CS_RAINPOSS',horiz_only,'1','Cloudsat Rain Possible Fraction'
'CS_RAINPROB',horiz_only,'1','CloudSat Rain Probable Fraction'
'CS_RAINCERT',horiz_only,'1','CloudSat Rain Certain Fraction'
'CS_SNOWPOSS',horiz_only,'1','CloudSat Snow Possible Fraction'
'CS_SNOWCERT',horiz_only,'1', 'CloudSat Snow Certain Fraction'
'CS_MIXPOSS',horiz_only,'1', 'CloudSat Mixed Possible Fraction'
'CS_MIXCERT',horiz_only,'1','CloudSat Mixed Certain Fraction'
'CS_RAINHARD',horiz_only,'1','CloudSat Heavy Rain Fraction'
'CS_UN', horiz_only,'1','CloudSat Unclassified Precipitation Fraction'
'CS_PIA', horiz_only,'dBZ','CloudSat Radar Path Integrated Attenuation'
MISR
'CLD_MISR',(/'cosp_tau','cosp_htmisr'/),'percent','Cloud Fraction from MISR Simulator'
MODIS
'CLTMODIS',horiz_only,'%','MODIS Total Cloud Fraction'
'CLWMODIS',horiz_only,'%','MODIS Liquid Cloud Fraction'
'CLIMODIS',horiz_only,'%','MODIS Ice Cloud Fraction'
'CLHMODIS',horiz_only,'%','MODIS High Level Cloud Fraction'
'CLMMODIS',horiz_only,'%','MODIS Mid Level Cloud Fraction'
'CLLMODIS',horiz_only,'%','MODIS Low Level Cloud Fraction'
'TAUTMODIS',horiz_only,'1','MODIS Total Cloud Optical Thickness*CLTMODIS'
'TAUWMODIS',horiz_only,'1','MODIS Liquid Cloud Optical Thickness*CLWMODIS'
'TAUIMODIS',horiz_only,'1','MODIS Ice Cloud Optical Thickness*CLIMODIS'
'TAUTLOGMODIS',horiz_only,'1','MODIS Total Cloud Optical Thickness (Log10 Mean)*CLTMODIS'
'TAUWLOGMODIS',horiz_only,'1','MODIS Liquid Cloud Optical Thickness (Log10 Mean)*CLWMODIS'
'TAUILOGMODIS',horiz_only,'1','MODIS Ice Cloud Optical Thickness (Log10 Mean)*CLIMODIS'
'REFFCLWMODIS',horiz_only,'m','MODIS Liquid Cloud Particle Size*CLWMODIS'
'REFFCLIMODIS',horiz_only,'m','MODIS Ice Cloud Particle Size*CLIMODIS'
'PCTMODIS',horiz_only,'Pa','MODIS Cloud Top Pressure*CLTMODIS'
'LWPMODIS',horiz_only,'kg m-2','MODIS Cloud Liquid Water Path*CLWMODIS'
'IWPMODIS',horiz_only,'kg m-2','MODIS Cloud Ice Water Path*CLIMODIS'
'CLMODIS',(/'cosp_tau_modis','cosp_prs'/),'%','MODIS Cloud Area Fraction'
'CLRIMODIS',(/'cosp_tau_modis','cosp_reffice'/),'%','MODIS Cloud Area Fraction'
'CLRLMODIS',(/'cosp_tau_modis','cosp_reffliq'/),'%','MODIS Cloud Area Fraction'
ISCCP
'FISCCP1_COSP',(/'cosp_tau','cosp_prs'/),'percent'
'CLDTOT_ISCCP',horiz_only,'1','percent'
'MEANCLDALB_ISCCP',horiz_only,'1','Mean cloud albedo*CLDTOT_ISCCP'
'MEANPTOP_ISCCP',horiz_only,'1','Pa','Mean cloud top pressure*CLDTOT_ISCCP'
'MEANTAU_ISCCP',horiz_only,'1','Mean optical thickness*CLDTOT_ISCCP'
'MEANTB_ISCCP',horiz_only,'1','K','Mean Infrared Tb from ISCCP simulator'
'MEANTBCLR_ISCCP',horiz_only,'1','A','K','Mean Clear-sky Infrared Tb from ISCCP simulator'
'TAU_ISCCP',(/'cosp_scol'/),'I','1','Optical Depth in each Subcolumn'
'CLDPTOP_ISCCP',(/'cosp_scol'/),'I','Pa','Cloud Top Pressure in each Subcolumn'

What COSP namelist options are available in CAM?
CAM namelist variables for COSP available with CESM1_1_1 and after, default values are in ():
cosp_amwg (.true.)
cosp_lite (.false.)
cosp_runall (.false.)
cosp_passive (.false.)
cosp_histfile_num (1) (NOTE: The cam html namelist documentation is wrong. It is says 2, but the default is actually 1.)
cosp_histfile_aux (.false.)
cosp_histfile_aux_num (2)
cosp_nradsteps (1)
cosp_ncolumns (50)
cosp_lmisr_sim (.false.)
cosp_lisccp_sim (.false.)
cosp_lradar_sim (.false.)
cosp_llidar_sim (.false.)
cosp_lmodis_sim (.false.)
cosp_lfrac_out (.false.)

Jen's description/notes on namelist options:
###################################
cosp_amwg (.true.)
###################################
If true, COSP cloud simulators are run to produce all output required for the COSP plots in the AMWG diagnostics package. sets cosp_ncolumns=10 and cosp_nradsteps=3 (appropriate for COSP statistics derived from seasonal averages), and runs MISR, ISCCP, MODIS, CloudSat radar and CALIPSO lidar simulators (cosp_lmisr_sim=.true.,cosp_lisccp_sim=.true., cosp_lmodis_sim=.true.,cosp_lradar_sim=.true.,cosp_llidar_sim=.true.). This default logical is set in cospsimulator_intr.F90. (available after cam5_1_16 and cam5.1.1/cesm1.0.4).
###################################
cosp_lite (.false.)
###################################
If true, the COSP cloud simulators are run to produce select output for the AMWG diagnostics package. sets cosp_ncolumns=10 and cosp_nradsteps=3 (appropriate for COSP statistics derived from seasonal averages), and runs MISR, ISCCP, MODIS, and CALIPSO lidar simulators (cosp_lmisr_sim=.true.,cosp_lisccp_sim=.true., cosp_lmodis_sim=.true.,cosp_llidar_sim=.true.). This default logical is set in cospsimulator_intr.F90. (available after cam5_1_16 and cam5.1.1/cesm1.0.4).
###################################
cosp_runall (.false.)
###################################
If true, run all simulators using the default values cosp_ncolumns=50 and cosp_nradsteps=1. This option is mainly intended for testing, but it also must be used in order to output the input fields needed to run the simulator in an offline mode (via setting cosp_histfile_aux=.true.). (available after cam5_1_16 and cam5.1.1/cesm1.0.4).
###################################
cosp_passive (.false.)
###################################
If true, the passive COSP cloud simulators are run to produce select output for the AMWG diagnostics package. sets cosp_ncolumns=10 and cosp_nradsteps=3 (appropriate for COSP statistics derived from seasonal averages), and runs MISR, ISCCP, and MODIS simulators (cosp_lmisr_sim=.true.,cosp_lisccp_sim=.true.,cosp_lmodis_sim=.true.). This default logical is set in cospsimulator_intr.F90. (available after cam5_1_16 and cam5.1.1/cesm1.0.4).
###################################
cosp_active (.false.)
###################################
If true, the active COSP cloud simulators are run to produce select output for the AMWG diagnostics package. sets cosp_ncolumns=10 and cosp_nradsteps=3 (appropriate for COSP statistics derived from seasonal averages), and runs CloudSat radar and CALIPSO lidar simulators (cosp_lradar_sim=.true.,cosp_llidar_sim=.true.). This default logical is set in cospsimulator_intr.F90. (available after cam5_1_16 and cam5.1.1/cesm1.0.4).
###################################
cosp_isccp (.false.)
###################################
If true, the ISCCP cloud simulator is run to produce select output for the AMWG diagnostics package. sets cosp_ncolumns=10 and cosp_nradsteps=3 (appropriate for COSP statistics derived from seasonal averages), and runs ISCCP simulator (cosp_lmisr_sim=.false.,cosp_lisccp_sim=.true., cosp_lmodis_sim=.false.,cosp_lradar_sim=.false.,cosp_llidar_sim=.false.). This default logical is set in cospsimulator_intr.F90. (available after cam5_1_16 and cam5.1.1/cesm1.0.4).
###################################
cosp_histfile_num (1)
###################################
The namelist variable sets the cam history tape number for COSP output. e.g., the default is "1", which means that COSP output will be written to h0 CAM history files. If you are writing monthly outputs, COSP output must be written to the h0 CAM history files. Monthly averaged outputs from CAM are only supported on the h0 CAM history files.
###################################
cosp_histfile_aux (.false.)
###################################
The namelist variable allows you to save all of the inputs needed to run the COSP simulator. It is intended for debug purposes. NOTE: This namelist option only works when cosp_runall=.true., i.e., when no specific simulators are set within the namelist e.g., the default is "false".
###################################
cosp_histfile_aux_num (2)
###################################
The namelist variable allows you to specify the history file where you will save all of the inputs needed to run the COSP simulator. e.g., the default is "2", which saves the outputs on the h1.nc history files
###################################
cosp_nradsteps (1)
###################################
The namelist variable sets the frequency at which is COSP is called. e.g., the default is "1", which means that COSP is called at every radiation timestep. If set to a number larger than 1, COSP is called at every cops_nradsteps radiation timestep. e.g., if set to 2, COSP would be called every other radiation timestep. NOTE: If saving instantaneous outputs and calling COSP at a frequency that is less often than every radiation timestep, the CAM history files will be the same size and have no data for the timesteps in which COSP was not called.
###################################
cosp_ncolumns (50)
###################################
I included the number of subcolumns run within COSP as a namelist variable because I thought this might be something that the user would want to change. All other cosp input values are hard-coded to the defaults for CFMIP in cospsimulator_intr.F90. 50 is the recommended value for long averages (e.g., months). For forecasts, Yuying/Jim had to use a larger number to get convergence between off-line and in-line results - e.g., 250.
###################################
cosp_lmisr_sim (.false.)
cosp_lisccp_sim (.false.)
cosp_lradar_sim (.false.)
cosp_llidar_sim (.false.)
cosp_lmodis_sim (.false.)
###################################
When called by any other method but the cosp_runall flag, the misr/isccp/modis simulators are run on day columns only. For example, setting the following in the namelist would run just the ISCCP simulator on the day columns and save all of the ISCCP output fields: cosp_lisccp_sim = .true. When the MODIS simulator is run, the ISCCP simulator is automatically also run. cosp_lmodis_sim = .true. By default, the radar/lidar simulators are run on all columns.
###################################
cosp_lfrac_out (.false.)
###################################
The option to include sub-column output (cosp_lfrac_out) on the COSP history files is included as a namelist variable. Sub-column calculations aren't turned off and on. When both the isccp/misr/modis simulators and the radar/lidar simulators are run, sub-column output is saved from the isccp/misr/modis simulator columns. Sub-column outputs cannot be averaged, and thus can only be saved as instantaneous outputs. Setting avgflag_pertape = 'A' with cosp_lfrac_out = .true. will cause the model to crash "CHECK_ACCUM" error.

Clone this wiki locally