| / NCAR / CGD / CMS / CCM3 / | [ CCM3 ] [ Processor ] [ LSM ] [ CSM ] |
The Column Radiation Model, or CRM, is a standalone version of the radiation model used in the NCAR Community Climate Model (CCM). The CRM is composed of the actual subroutines from the CCM3 that have been modified as little as possible in order to run in a standalone mode. The CRM is freely available (see below) and is a useful tool for scientific studies of the Earth's solar and infrared energy budgets, greenhouse gas and aerosol radiative forcing, and column energy closure experiments.
The CRM has been in maintenance mode (no new features) since 2005. NCAR's General Circulation Models (GCMs) CCM2, CCM3, CAM1, and CAM2 used physics nearly (and exactly, in the case of CCM3) identical to this CRM codebase during their operational lives from 1992--2004. Hence CRM radiative fluxes are indistinguishable from those models.
The NCAR CAM3 GCM, released in 2004, uses the nearly the same shortwave and longwave radiative physics as its predecessors. However, CAM3 updated the line parameters for the longwave physics. Also, CAM3 adopted an improved cloud overlap scheme. Hence clearsky longwave radiative fluxes, and clear and cloudy sky short and longwave fluxes, will have small, and, in the case of fractional cloud overlap, significant differences between CRM and CAM3. CAM4, to be released in lated 2009, uses AER RRTM radiative physics. These are completely different from the CRM radiative physics, and hence all answers will differ.
CRM accuracy is good enough for most purposes. However, advances in radiative line databases and physics (e.g., cloud overlap) mean it is no longer suitable for high accuracy (< ~1 W/m2) absolute radiative flux computation. This especially includes flux changes, e.g., forcings due to clouds, changing atmospheric parameters and trace gas concentrations, and doubling CO2 experiments. CRM is hard to beat when you want “back of the envelope” speed and simplicity. For higher accuracy (< ~1 W/m2), use another model, like RRTM.
2009/08/24: CRM 2.1.5 is released. It has Makefile updates that allow it to work with gfortran and with netCDF4.
2006/02/03: Maintaining this distribution at NCAR was too difficult because of the security perimeter. The CRM homepage and distribution is now on dust.ess.uci.edu. The new version is CRM 2.1.4. It has small Makefile changes.
2005/12/15: Updated location for CRM Online. I should also mention, since I do not update this page very often, that I occasionally do update the Makefile to maintain compatibility with new compiler switches, etc. So the code has not been completely frozen since 2000. In fact, I added eight new diagnostic output fields in 2001. However, I have stopped updating the CRM version number. If this bothers you, let me know and I will revert to making tradiational, numbered releases.
2000/02/25: CRM 2.1.2 is released. This fixes inconsistencies in mls_clr.out and mls_cld.out accidentally introduced in CRM 2.1.1. These sample output files should once again agree (to roundoff) with files produced by the CRM as built from scratch.
2000/01/04: CRM 2.1.1 is released. CRM 2.1.1 is a bugfix release. This version fixes a bug introduced in 2.1.0 in which the diagnostic arrays containing the vertical profile of the LW fluxes (variables flx_LW_dwn, flx_LW_up and flx_LW_net) were not always initialized correctly. On some machine/compiler combinations, this bug caused incorrect answers in these arrays (especially if the CRM was compiled with PLON > 1). Single level fields (e.g., flnt, flntc, flns, flds, flus) were not affected by this bug. Thanks to Mike Iacono for reporting the bug and supplying the patch. Users of Solaris f90 and Solaris f77 should read the Known Problems before deciding whether to upgrade.
There is now a WWW front end to the CRM available on the Web. Professor Brian Fiedler of the School of Meteorology at the University of Oklahoma has created a simple point and click interface to the CRM called CRM Online. CRM Online allows interactive setting of tropospheric and stratospheric temperatures, CO2 mixing ratio, and specific humidity.
1999/09/07: CRM 2.1 is released. Version 2.1 includes archival of many more diagnostic quatities. New quantities which are now automatically archived include spectral optical depths, spectral fluxes, vertical profiles of SW and LW fluxes, and spectral albedos. In addition, the build mechanism has been simplified and generalized. There are no new physics and answers do not change so upgrading is not necessary. CRM 2.1 requires a decent Fortran 90 compiler to advantage of these new features.
Who should upgrade? User who would like access to vertical and spectral information previously unavailable in the CRM diagnostics should upgrade. Download sample text and netCDF output files from the CRM version 2.1 to see if you would benefit from upgrading. Users of Solaris f90 and Solaris f77 should read the Known Problems before deciding whether to upgrade.
1999/07/02: CRM 2.0.2 is released. Version 2.0.2 is a maintenance release. Changes include improved FAQ, build features, and more diagnostices in crm.nc. There are no new physics and answers do not change so upgrading is not necessary.
1998/08/28: CRM 2.0 is released. Version 2.0 is based on the newly released CCM 3.6, and implements all applicable CCM namelist parameters. Run-time specification of for these parameters (e.g., trace gas concentrations, orbital parameters, aerosol optical depth) is implemented via additional lines in the input files. The new input files are backwards compatible with older CRM input files. Many more diagnostics (e.g., optical depths, spectral albedos) are implemented. All users are urged to upgrade to CRM 2.0
1998/07/22: CRM 1.16 is released. Version 1.16 uses a new directory structure more similar to the CCM directory structure. There are no physics changes in CRM 1.16. The new directory structure is now under CVS control and this should facilitate maintainance of the CRM.
1998/07/10: CRM 1.15 is released. Version 1.15 fixes a bug introduced in the surface radiation budget (SRB) diagnostics of CRM 1.13 (released March, 1998). The direct/diffuse partitioning of fluxes in versions 1.13--1.14 of the CRM was incorrect. The total and spectral fluxes were not affected by this bug. See the ChangeLog for details. All users are urged to upgrade to CRM 1.15.
The distribution includes the complete CRM source code necessary to build and run the CRM on your own machine.
`FAQ' is a list of Frequently Asked Questions about the CRM. Please read this file before sending questions to the CRM maintainers.
`README' briefly describes the CCM3 CRM, links to further documentation, and contact information for further questions.
`INSTALL' contains the CCM3 CRM installation instructions.
Here is a sample install on my Ubuntu laptop:
zender@neige:~/foo$ uname -a
Linux neige 2.6.28-15-generic #49-Ubuntu SMP Tue Aug 18 19:25:34 UTC 2009 x86_64 GNU/Linux
zender@neige:~/foo$ /bin/rm -r ~/foo
zender@neige:~/foo$ mkdir ~/foo
zender@neige:~/foo$ cd ~/foo
zender@neige:~/foo$ wget http://dust.ess.uci.edu/crm/crm.tar.gz
--2009-09-30 17:28:42-- http://dust.ess.uci.edu/crm/crm.tar.gz
Résolution de dust.ess.uci.edu... 128.195.185.76
Connexion vers dust.ess.uci.edu|128.195.185.76|:80... connecté.
requête HTTP transmise, en attente de la réponse... 200 OK
Longueur: 779238 (761K) [application/x-gzip]
Saving to: `crm.tar.gz'
100%[========================================================>] 779 238 1,72M/s in 0,4s
2009-09-30 17:28:43 (1,72 MB/s) - « crm.tar.gz » sauvegardé [779238/779238]
zender@neige:~/foo$ tar xvzf crm.tar.gz
./crm/
./crm/bld/
./crm/bld/Makefile
./crm/bld/Makefile.~1.1.2.40.~
./crm/bld/crm_dst.pl
./crm/bld/CVS/
./crm/bld/CVS/Root
./crm/bld/CVS/Entries
./crm/bld/CVS/Tag
./crm/bld/CVS/Repository
./crm/bld/CVS/Template
./crm/bld/pvmgetarch
./crm/data/
./crm/data/mls_cld.out
./crm/data/CVS/
./crm/data/CVS/Root
./crm/data/CVS/Entries
./crm/data/CVS/Tag
./crm/data/CVS/Repository
./crm/data/CVS/Template
./crm/data/mls_cld.in
./crm/data/mls_clr.in
./crm/data/mls_clr.out
./crm/CVS/
./crm/CVS/Root
./crm/CVS/Entries
./crm/CVS/Tag
./crm/CVS/Repository
./crm/CVS/Template
./crm/src/
./crm/src/eul/
./crm/src/eul/prgrid.h
./crm/src/eul/pagrid.h
./crm/src/eul/CVS/
./crm/src/eul/CVS/Root
./crm/src/eul/CVS/Entries
./crm/src/eul/CVS/Tag
./crm/src/eul/CVS/Repository
./crm/src/eul/CVS/Template
./crm/src/eul/pmgrid.h
./crm/src/csm_share/
./crm/src/csm_share/orb.h
./crm/src/csm_share/CVS/
./crm/src/csm_share/CVS/Root
./crm/src/csm_share/CVS/Entries
./crm/src/csm_share/CVS/Tag
./crm/src/csm_share/CVS/Repository
./crm/src/csm_share/CVS/Template
./crm/src/csm_share/orb.F
./crm/src/csm_share/orb_cosz.h
./crm/src/srchutil/
./crm/src/srchutil/isrchfgt.F
./crm/src/srchutil/wheneq.F
./crm/src/srchutil/CVS/
./crm/src/srchutil/CVS/Root
./crm/src/srchutil/CVS/Entries
./crm/src/srchutil/CVS/Tag
./crm/src/srchutil/CVS/Repository
./crm/src/srchutil/CVS/Template
./crm/src/srchutil/isrchfle.F
./crm/src/srchutil/intmax.F
./crm/src/srchutil/whenfgt.F
./crm/src/srchutil/whenne.F
./crm/src/srchutil/whenflt.F
./crm/src/physics/
./crm/src/physics/zenith.F
./crm/src/physics/radoz2.F
./crm/src/physics/crdcon.h
./crm/src/physics/compbl.h
./crm/src/physics/radclw.F
./crm/src/physics/radinp.F
./crm/src/physics/comvmr.h
./crm/src/physics/radabs.F
./crm/src/physics/cldems.F
./crm/src/physics/fmrgrid.F
./crm/src/physics/CVS/
./crm/src/physics/CVS/Root
./crm/src/physics/CVS/Entries
./crm/src/physics/CVS/Tag
./crm/src/physics/CVS/Repository
./crm/src/physics/CVS/Template
./crm/src/physics/radclr.F
./crm/src/physics/torgrid.F
./crm/src/physics/radini.F
./crm/src/physics/comsol.h
./crm/src/physics/cldefr.F
./crm/src/physics/radded.F
./crm/src/physics/crdcae.h
./crm/src/physics/aermix.F
./crm/src/physics/trcpth.F
./crm/src/physics/radtpl.F
./crm/src/physics/radctl.F
./crm/src/physics/coreiorad.h
./crm/src/physics/trcplk.F
./crm/src/physics/radems.F
./crm/src/physics/trcabn.F
./crm/src/physics/trcmix.F
./crm/src/physics/trcems.F
./crm/src/physics/comindx.h
./crm/src/physics/trcab.F
./crm/src/physics/radcsw.F
./crm/src/CVS/
./crm/src/CVS/Root
./crm/src/CVS/Entries
./crm/src/CVS/Tag
./crm/src/CVS/Repository
./crm/src/CVS/Template
./crm/src/crm/
./crm/src/crm/misc.h.~1.1.2.1.~
./crm/src/crm/misc.h
./crm/src/crm/CVS/
./crm/src/crm/CVS/Root
./crm/src/crm/CVS/Entries
./crm/src/crm/CVS/Tag
./crm/src/crm/CVS/Repository
./crm/src/crm/CVS/Template
./crm/src/crm/crm.F
./crm/src/crm/params.h
./crm/src/crm/crmsrb.h
./crm/src/crm/netcdf.F
./crm/src/crm/crm.F.~1.1.2.17.~
./crm/src/dom/
./crm/src/dom/albedo.h
./crm/src/dom/CVS/
./crm/src/dom/CVS/Root
./crm/src/dom/CVS/Entries
./crm/src/dom/CVS/Tag
./crm/src/dom/CVS/Repository
./crm/src/dom/CVS/Template
./crm/src/dom/albocean.F
./crm/src/control/
./crm/src/control/perturb.h
./crm/src/control/comozp.h
./crm/src/control/CVS/
./crm/src/control/CVS/Root
./crm/src/control/CVS/Entries
./crm/src/control/CVS/Tag
./crm/src/control/CVS/Repository
./crm/src/control/CVS/Template
./crm/src/control/ptrrgrid.h
./crm/src/control/blkdat.F
./crm/src/control/comtim.h
./crm/src/control/comlun.h
./crm/src/control/comctl.h
./crm/src/control/resetr.F
./crm/src/control/comhst.h
./crm/src/ccmlsm_share/
./crm/src/ccmlsm_share/getmem.F
./crm/src/ccmlsm_share/implicit.h
./crm/src/ccmlsm_share/endrun.F
./crm/src/ccmlsm_share/CVS/
./crm/src/ccmlsm_share/CVS/Root
./crm/src/ccmlsm_share/CVS/Entries
./crm/src/ccmlsm_share/CVS/Tag
./crm/src/ccmlsm_share/CVS/Repository
./crm/src/ccmlsm_share/CVS/Template
./crm/src/ccmlsm_share/freemem.F
./crm/doc/
./crm/doc/README
./crm/doc/index.shtml.~1.1.2.18.~
./crm/doc/index.shtml
./crm/doc/AEROSOL
./crm/doc/LICENSE
./crm/doc/INSTALL
./crm/doc/ChangeLog.~1.1.2.19.~
./crm/doc/TAG
./crm/doc/CVS/
./crm/doc/CVS/Root
./crm/doc/CVS/Entries
./crm/doc/CVS/Tag
./crm/doc/CVS/Repository
./crm/doc/CVS/Template
./crm/doc/TODO
./crm/doc/ChangeLog
./crm/doc/FAQ
./crm/doc/VERSION.~1.1.2.4.~
./crm/doc/ANNOUNCE
./crm/doc/MANIFEST
./crm/doc/VERSION
./crm/obj/
./crm/obj/zenith.o
./crm/obj/README
./crm/obj/intmax.o
./crm/obj/whenflt.o
./crm/obj/trcems.o
./crm/obj/radcsw.d
./crm/obj/cldefr.d
./crm/obj/orb.d
./crm/obj/wheneq.d
./crm/obj/endrun.d
./crm/obj/isrchfle.d
./crm/obj/radtpl.d
./crm/obj/crm.d
./crm/obj/radinp.o
./crm/obj/trcmix.d
./crm/obj/freemem.d
./crm/obj/isrchfgt.d
./crm/obj/zenith.d
./crm/obj/endrun.o
./crm/obj/intmax.d
./crm/obj/fmrgrid.o
./crm/obj/radabs.o
./crm/obj/radems.d
./crm/obj/radclr.d
./crm/obj/resetr.o
./crm/obj/trcabn.o
./crm/obj/torgrid.d
./crm/obj/radclw.d
./crm/obj/netcdf.d
./crm/obj/radoz2.o
./crm/obj/trcab.d
./crm/obj/blkdat.d
./crm/obj/cldefr.o
./crm/obj/radctl.o
./crm/obj/trcpth.o
./crm/obj/orb.o
./crm/obj/aermix.d
./crm/obj/CVS/
./crm/obj/CVS/Root
./crm/obj/CVS/Entries
./crm/obj/CVS/Tag
./crm/obj/CVS/Repository
./crm/obj/CVS/Template
./crm/obj/torgrid.o
./crm/obj/whenne.o
./crm/obj/fmrgrid.d
./crm/obj/trcplk.o
./crm/obj/trcabn.d
./crm/obj/trcab.o
./crm/obj/crm.o
./crm/obj/albocean.d
./crm/obj/radtpl.o
./crm/obj/radini.d
./crm/obj/radabs.d
./crm/obj/getmem.d
./crm/obj/cldems.o
./crm/obj/freemem.o
./crm/obj/aermix.o
./crm/obj/netcdf.o
./crm/obj/blkdat.o
./crm/obj/wheneq.o
./crm/obj/radctl.d
./crm/obj/radinp.d
./crm/obj/isrchfgt.o
./crm/obj/trcpth.d
./crm/obj/trcems.d
./crm/obj/radded.o
./crm/obj/radcsw.o
./crm/obj/radclw.o
./crm/obj/whenfgt.o
./crm/obj/radems.o
./crm/obj/cldems.d
./crm/obj/trcmix.o
./crm/obj/radoz2.d
./crm/obj/resetr.d
./crm/obj/getmem.o
./crm/obj/whenfgt.d
./crm/obj/radini.o
./crm/obj/radclr.o
./crm/obj/whenflt.d
./crm/obj/trcplk.d
./crm/obj/whenne.d
./crm/obj/radded.d
./crm/obj/isrchfle.o
./crm/obj/albocean.o
./crm/bin/
./crm/bin/README
./crm/bin/CVS/
./crm/bin/CVS/Root
./crm/bin/CVS/Entries
./crm/bin/CVS/Tag
./crm/bin/CVS/Repository
./crm/bin/CVS/Template
./crm/bin/crm
zender@neige:~/foo$ cd crm/bld
zender@neige:~/foo/crm/bld$ make
gcc -std=c99 -pedantic -D_BSD_SOURCE -D_POSIX_SOURCE -M -DPRC_DBL -DENABLE_NETCDF4 -DLINUXAMD64 -DHOSTNAME='neige' -DUSER='zender' -DLINUX -I../src/crm -I../src/ccmlsm_share -I../src/control -I../src/csm_share -I../src/dom -I../src/eul -I../src/physics -I../src/srchutil -I/usr/local/include -I/usr/local/include ../src/crm/crm.F | perl -p -e 's/crm(\.F)?\.o/..cszzscobj\/crm.o ..cszzscobj\/crm.d/g;s/cszzsc/\//g' > ../obj/crm.d
gfortran -DPRC_DBL -DENABLE_NETCDF4 -DLINUXAMD64 -DHOSTNAME='neige' -DUSER='zender' -DLINUX -I../src/crm -I../src/ccmlsm_share -I../src/control -I../src/csm_share -I../src/dom -I../src/eul -I../src/physics -I../src/srchutil -I/usr/local/include -I/usr/local/include -c -fcray-pointer -ffixed-line-length-132 -Wall -fno-second-underscore -fdefault-real-8 -O -g -o ../obj/crm.o ../src/crm/crm.F
Warning: Nonconforming tab character in column 2 of line 256
Warning: Nonconforming tab character in column 2 of line 258
Warning: Nonconforming tab character in column 2 of line 273
Warning: Nonconforming tab character in column 2 of line 1439
Warning: Nonconforming tab character in column 2 of line 1441
Warning: Nonconforming tab character in column 2 of line 1456
../src/crm/crm.F:927.38:
subroutine writeric(nabem,absems,lngbuf,nrow)
1
Warning: Unused dummy argument 'absems' at (1)
../src/crm/crm.F:927.45:
subroutine writeric(nabem,absems,lngbuf,nrow)
1
Warning: Unused dummy argument 'lngbuf' at (1)
../src/crm/crm.F:927.31:
subroutine writeric(nabem,absems,lngbuf,nrow)
1
Warning: Unused dummy argument 'nabem' at (1)
../src/crm/crm.F:927.50:
subroutine writeric(nabem,absems,lngbuf,nrow)
1
Warning: Unused dummy argument 'nrow' at (1)
../src/crm/crm.F:933.37:
subroutine readric(nabem,absems,lngbuf,nrow)
1
Warning: Unused dummy argument 'absems' at (1)
../src/crm/crm.F:933.44:
subroutine readric(nabem,absems,lngbuf,nrow)
1
Warning: Unused dummy argument 'lngbuf' at (1)
../src/crm/crm.F:933.30:
subroutine readric(nabem,absems,lngbuf,nrow)
1
Warning: Unused dummy argument 'nabem' at (1)
../src/crm/crm.F:933.49:
subroutine readric(nabem,absems,lngbuf,nrow)
1
Warning: Unused dummy argument 'nrow' at (1)
../src/crm/crm.F:939.48:
subroutine outfld(name,tmp ,plond,lat,hbuf)
1
Warning: Unused dummy argument 'hbuf' at (1)
../src/crm/crm.F:939.43:
subroutine outfld(name,tmp ,plond,lat,hbuf)
1
Warning: Unused dummy argument 'lat' at (1)
../src/crm/crm.F:939.28:
subroutine outfld(name,tmp ,plond,lat,hbuf)
1
Warning: Unused dummy argument 'name' at (1)
../src/crm/crm.F:939.39:
subroutine outfld(name,tmp ,plond,lat,hbuf)
1
Warning: Unused dummy argument 'plond' at (1)
../src/crm/crm.F:939.32:
subroutine outfld(name,tmp ,plond,lat,hbuf)
1
Warning: Unused dummy argument 'tmp' at (1)
../src/crm/crm.F:945.27:
subroutine radozn(lat ,pmid ,o3vmr )
1
Warning: Unused dummy argument 'lat' at (1)
../src/crm/crm.F:945.47:
subroutine radozn(lat ,pmid ,o3vmr )
1
Warning: Unused dummy argument 'o3vmr' at (1)
../src/crm/crm.F:945.37:
subroutine radozn(lat ,pmid ,o3vmr )
1
Warning: Unused dummy argument 'pmid' at (1)
gfortran -o ../bin/crm ../obj/crm.o ../obj/netcdf.o ../obj/endrun.o ../obj/freemem.o ../obj/getmem.o ../obj/blkdat.o ../obj/resetr.o ../obj/orb.o ../obj/albocean.o ../obj/aermix.o ../obj/cldefr.o../obj/cldems.o ../obj/fmrgrid.o ../obj/radabs.o ../obj/radclr.o ../obj/radclw.o ../obj/radcsw.o ../obj/radctl.o ../obj/radded.o ../obj/radems.o ../obj/radini.o ../obj/radinp.o ../obj/radoz2.o ../obj/radtpl.o ../obj/torgrid.o ../obj/trcab.o ../obj/trcabn.o ../obj/trcems.o ../obj/trcmix.o ../obj/trcplk.o ../obj/trcpth.o ../obj/zenith.o ../obj/intmax.o ../obj/isrchfgt.o ../obj/isrchfle.o ../obj/wheneq.o ../obj/whenfgt.o ../obj/whenflt.o ../obj/whenne.o -L/home/zender/lib/LINUXAMD64 -L/usr/local/lib -L/usr/local/lib -lnetcdf -lhdf5_hl -lhdf5 -lz -lcurl
chmod 755 ../bin/crm
zender@neige:~/foo/crm/bld$
`ChangeLog' contains the most up-to-date information on the latest CRM improvements. There is no need to install minor, unannounced upgrades to CRM unless a problem you are having with CRM is listed in `ChangeLog' as having been fixed in the latest revision.
You can easily tell whether you have the most recent version, and whether you should upgrade by reading the ChangeLog.
| / NCAR / CGD / CMS / CCM3 / | [ CCM3 ] [ Processor ] [ LSM ] [ CSM ] |