Updated on Jan30,2007 by JH;  by N. Zeng 6/2008;

A brief guide on using the UMD Earth system model (CABO)

The UMD model is a flexible Earth system model of intermediate complexity, that consists of the atmosphere, ocean, land, dynamic vegetation,
terrestrial and ocean carbon cycle components. These components can be relatively easily switched on and off, as you will see in the names
of the types of coupling one can do (See Chapters 1, 2).

Example 1: a run labled CABOa_ALV means: Atmosphere, Land, dynamic Vegetation are 'on'; while other processes are 'off', e.g.,
it would use observed SST for the Ocean, and atmospheric CO2 for greenhouse forcing, etc. This is the default version of provided by the package.

Example 2: CABOa_OALVC: the most fully coupled version including interactive Ocean, Atmo, Land, Vege, Carbon cycle, in which, among other things,
 atmospheric CO2 is predicted and its impact on longwave radiation (greenhouse effect) and vegetation growth (CO2 fertilization effect) are dynamically
determined by the model. This is the C4MIP style run (Zeng et al., 2004).

Content of this document

Quick Start
1. Source code available: please contact us (click here); or for internal use: /data/cordilleran/cabo/release/CABOa.tar.gz
This package contains source code which can be converted into LV, ALV, OALV, OALVC version as well as boundary forcing for spin up experiments.
If you downloaded this package, please do the following!
> mkdir modeling
> mv CABOa.tar.gz ./modeling                 ! or any other destination directory
> cd modeling
> tar -xzvf CABOa.tar.gz
> cd CABOa
> ./FIRST.sh                                               ! check if your fortran compiler works; you may need to modify the makefile
> cd proc
> grads -p
> grads> clim.gs                                         ! the output is in fortran binary, which  we typically use the software GrADS (grads.iges.org) to view

The package is prepare for ALV (AMIP-style) run.  If you are interested in C4MIP style run (OCALV),
please use 'ALV2OCALV.sh'.
> cd CABOa
> ./ALV2OCALV.sh
Remember that we need spin-up runs...
./spinALV.sh (spin-up vegetation/land using observed SST).
./spinOALV.sh (compute the fluxes for mxl-ocean model and run extra 100 yrs)

After that, you can use the following scripts in ./work directory
    couple.sh (fully coupled run)
    uncouple.sh (uncouple run)
    uncouple_tmp.sh (to obtain the temperature from uncouple run
                                we need to obtain 'CO2atmo' and make a txt file)


We have provided some utilities to convert the model versions (which is pretty easy if you want to do it yourself).
Example: if you want to run LV version, you need to convert the default ALV version into LV:

>
mkdir modeling
> mv CABOa.tar.gz ./modeling                 ! any destination directory
> cd modeling
> tar -xzvf CABOa.tar.gz
> cd CABOa
> ALV2LV.sh                                             ! you will run spin-up run of LV version which brings land/vege to equilibrium point.
> cd proc
> grads -p
> grads> 100yr.gs                                       ! check vege/soil status (e.g., LAI).


If you want to change it back to ALV, please do the following:
in /CABOa
> ./LV2ALV.sh                                          

If you want to change ALV to OALV (not Carbon Climate coupled yet), please do the following:
in /CABOa
> ./ALV2OLAV.sh       

                                     
2. Boundary data : /data/cordilleran/cabo/release/bnddata_2.5x2.5.tar.gz
                                 /data/cordilleran/cabo/release/bnddata_64x48.tar.gz
If you want to run long-term simulation, these packages are necessary.



Chapter 1. Major types of couplings using CABO



1.1 Fully coupled carbon-climate (CABOa; effectively CABOa_OALVC)
Needs to be implemented and tested
Forcings: Anthropogenic CO2 emission (from Bern; SRESA1B, A2) Interactive components: History of Each components
1.1+ Fully coupled carbon-climate (CABOa; effectively CABOa_OALVC); Holocene version

Forcings: Anthropogenic CO2 emission (from Bern; SRESA1B, A2)

Interactive components:

1.2 CO2 forced, interactive ocean, atmo, land, vegetation (CABOa_OALV)


Forcings: Anthropogenic CO2 emission (from Bern; SRESA1B, A2) Interactive components:

1.3 SST forced, interactive atmo, land, vegetation (CABOa_ALV)

Forcings: SST: GISST 1871-2002
Interactive components:

1.3+ C20C protocol
   
Forcings :
	

1.4 Offline land/vege model forced by atmospheric Prec, Temp, etc. (CABOa_LV)
Forcings:
Interactive components:








Chapter 2. How to Run CABOa




0. CABOa Directory structure
         ../CABOa            : model tar package
./bnddata* : time-invariant boundary data
STYPE/TOPO...
./inidata : For the ensemble experiments using driver.F.ALV,
./proc : Where output go
./src : Source program and make file to compile
./work : Your working scripts
./qtcmpar : Parameters for QTCMg model
from UCLA

*Boundary data for long-term simulation
../bnddata_64x48 : SST_HADSST (1870-current)
../bnddata_1.0x1.0 : CRU_TS2.0 (1901-2000)
../bnddata_2.5x2.5 : CRU_TS2.0 (1901-2000)


1. Basic


2. To Run ALV
ALV is default now.  You don't need to do the below at the beginning.
Currently, 64x48 version is workiing (5.625 x 3.75).  
Let's assume you want to change the model from LV to ALV.
Please use 'LV2ALV.sh' in /CABOa as mentioned above.
Step by step instructions are

# Step 1   point to appropriate boundary data (time-invariant field)
rm -f ./bnddata                                               # remove the previous one
ln -s ./bnddata_64x48 ./bnddata                   # link bnddata_64x48-> bnddata

# Step 2   in src
cd src
cp -f hgrid_64x48.h hgrid.h                          # Change hgrid.h to 64x48

# driver.F.ALV                                              # AtmoDriv() which calls QTCMg
                                                                         # in place of AtmoRead() [LV]
cp driver.F.ALV driver.F                             # Copy driver.F.ALV to driver.F

# make sure it works on your platform, and compiler
cp -f makefile.ifc      makefile                         # Choose a propoer makefile
                                                                         # Successfully tested on IFORT on linux
#cp -f makefile.dec      makefile                     # f90 on Dec (Unix)
#cp -f makefile.declinux makefile                  # fort on Dec (Linux)
#cp -f makefile.tempest  makefile                  # f90 on Sun ('tempest' at NCAR)
make clean
make                                                                # Compile
cd  ..


# Step 3   run the model
# make sure bnddir2 in #.sh # Check your Prec/Tmp data and path   :
cd work
./spin_ALV.sh                                               # spin-up to reach equilibrium state for
                                                                        # soil/vege carbon pools
                                                                        # for 200yr w/ 140yr acceleration for
                                                                        # slow carbon pools.
                                                                        # This step is necessary

2.1 Important user parameters
2.2 Albedo feedback w/ anomaly coupling
    Now, Albedo feedback is included
2.3 Climate Forcing
    Now, we can include 'Solar variability/Volcanic/Aerosol forcing as simple radiative forcing'
    as default

2.4 Topographic effect w/ additional heating
    Tested by Massimo/Implemented by JINHO

2.5 Scripts
Pleaes use these as default scripts (in ./work)

3. To Run LV
It is not default.  You have to make the following changes to run LV.
Currently, we tested 2.5x2.5 (144x72) and 1.0x1.0 (360x180) versions.
Let's assume we are going to use 144x72.
In a simple and easy way to do is using a script 'ALV2LV.sh' in CABOa.
>  ./ALV2LV.sh
Step by step instruction is following.
< style="color: rgb(0, 0, 0);">
#Step 1   point to appropriate boundary data (time-invariant field)<>
rm -f ./bnddata                                  # remove the previous one

ln -s ./bnddata_2.5x2.5 ./bnddata    # link bnddata_2.5x2.5-> bnddata

# Step 2   in src
cd src
cp -f hgrid_144x72.h hgrid.h           # Change hgrid.h to 144x72 or 360x180

# driver.F.LV                                    # reads prec,Ts etc using AtmoRead(),
                                                            # in place of AtmoDriv() [ALV]
cp driver.F.LV driver.F                   # Copy driver.F.LV to driver.F

# make sure it works on your platform, and compiler
cp -f makefile.ifc      makefile            # Choose a propoer makefile
                                                            # Successfully tested on IFORT on linux
#cp -f makefile.dec      makefile        # f90 on Dec (Unix)
#cp -f makefile.declinux makefile     # fort on Dec (Linux)
#cp -f makefile.tempest  makefile     # f90 on Sun ('tempest' at NCAR)
make clean
make                                 # Compile
cd  ..


# Step 3   run the model
# make sure bnddir2 in #.sh # Check your Prec/Tmp data and path   :
cd work
./spin_LV.sh                                      # spin-up to reach equilibrium state for
                                                            # soil/vege carbon pools
                                                            # for 300yr w/ 200yr acceleration for
                                                            # slow carbon pools.

3.1 Important user parameters
3.2 Scripts Pleaes use these as default scripts (in ./work)

3. To run OALV   
          Only seasonal climatological boundary forcing is within the package.  To run 'GSAV', please contact us.
4. Remarks
4.1 History 
4.2 Codes
4.3 Makefile
With Intel Fortran Compiler 8.0 needs some more libraries (Vaxlib) : ifort -w -Vaxlib -vec_report0 -extend_source -axW
With Dec machine makefile.dec (DEC Alpha with Linux, fortran 90/95 compiler) we don't need all the above options.





Chapter 3. Experiments with CABOa at UMD



3.1 CABOa-ALV : CO2 read and Land/Vege interactive
3.2 CABOa-LV : GSWP2 Baseline experiments
3.3 CABOa-AL : CO2 read and Land interactive
3.4 CABOa-A : CO2 read
3.5 UsingMixed-Layer Ocean model

3.6 Volcano/Aerosol forcing?



Chapter 4. Description of ESM0 simulation setup (with IPCC A1b)

Interactive components:
4.1 CO2 related vars in esm0
4.2  Experiments design:

Spin-up :
  1. Given co2=330 at qtcm initial condition and
  2. then nudge it to co2obs=281 ppmv in the spinup run.
  3. No Emission input.
  4. use Cemi=Cemi+(CO2obs-CO2atmo)*2.05/10 to nudge to co2obs=281ppmv
  5. note: co2atmov=co2rad=co2atmo
Coupled :
  1. co2obs is IPCC A1b(referring) no using .
  2. Now Anthropogenic CO2 emission IPCC A2 scenario is added as emission forcing
  3. note: co2rad=co2atmov=co2atmo
Uncoupled :
  1. keep co2rad=280.0. This will keep temperature no change.
  2. Anthropogenic CO2 emission IPCC A1b scenario is added ,
  3. co2atmov=co2atmo is forcing for the vegetation activities.
  4. co2atmo is simulated by esm0 without feedback back (diff from coupled run).
  5. note: co2atmov=co2atmo, co2rad=280.0.
Remarks :
  1. @@@@ co2atmo is modelled , we use Radiative physical model to simulate temperature forced by co2atmo.
  2. drawing co2atmo and treat it as co2obs in REAL run, setting co2rad=co2obs
  3. note: co2atmo --> co2rad
Real :
  1. reading co2 data and use it as forcing to run esm0
  2. co2atmov=co2rad=co2obs, co2atmo is output (zeng's intial offline designs)
  3. This run is to simulate temperature of the IPCC A1b CO2 and second part of uncoupled run to simulate temperature.
  4. note: co2obs --> co2rad
  5. co2atmov=co2rad=co2obs

4.3 UMD2:   
    This simulation use Anthropogenic CO2 emission IPCC A2 (from Bern; SRESA1B, A2) and in ocean in ocean carbon part we modified the ocean uptake to hope its uptake C of around 120(118+-9 Gtc) in 1860-2000. The simulation setup is same as esm0.


Chapter 5. Boundary Data 

5.1 Fixed Field
5.2 Time-varing field
5.3 Offline simulation


Chapter 6. ESM_coupling_notes

landon=0 : iSTYPE set to 0 (in [drivinit]), everywhere like ocean; specifically:
  1. Ts uses SST everywhere (update Ts if iSTYPE=0 in AtmoDriv)
  2. <>ALBDs uses observed value (see entry on ALBDs).  If a true aqua-planet is desired, ALBDs needs water value (~.1) on 'land'
  3. <>Roughness length Zrough=0.0024 (ocean) everywhere in VegeDriv; this is also set as initial value in QTCM's [bndinit] so it will stay if VegeDriv is not called.
landon=1 (default) : For all the points iSTYPE.ne.0, land will do:
  1. Ts
  2. Evap, FTs which are passed to [AtmoStep]. Since [sflux] in qtcm calculates its own Evap/FTs, only land values are updated as Evapin=Evap...
  3. After [VegeStep], Zrough is calculated as a function of vege height (vhmean), controlled by iSTYPE through landon in [VegeDriv]
landon=2
  1. Like landon=1; except using prescripd WDclim to replace WD


ivegon=0
  1. vc=1,beta=swet**.25 in [LandStep]; QTCM original formulation;
  2. however, Zrough (used by CDN for evap/FTs) and ali (used by interception loss Evapi) need to be given to [LandStep] @@@

ivegon=1 (default)
  1. interactive

ivegon=2
  1. as =1, but with ali=aliclim (prescribed climatology with seasonal cycle)


*** Comments on passing Evap/FTs between land and atmo

  1. We compute fluxes in atmo [sflux] assuming everywhere is ocean (but using input Zrough so over land it is so-called 'swamp' evap, if Zrough is not like ocean which can be controlled after [VegeStep] in driver).  To facilitate offline simulation, land calculates its own Evap/FTs. These are passed into [AtmoStep] as Evapin/FTsin which are then used by [barcl].  Thus atmo is using the Evap/FTs over ocean from the previous timestep rather than the current values calculated in [sflux].
  2. Advantage: more modular; great for offline land/vege simulations
  3. Drawback: values from previous timestep; imperfection in restart run


*** ALBDs (used by AtmoStep):
  1. Currently observed (Darnell) annual mean initialized in [drivinit];
  2. <>However in a truely interactive mode, ALBDs=ALBDsv where ALBDsv is predicted by the vegetation model as (from VEGAS code):
  3. <>c- compute albedo given vegetation; from .45-.1 when alit from 0-infty c @Note: since alit is rescaled later by vegc, this needs modification
  4. ALBDs(i) = .45 - .35 * ( 1. - exp( -.5*alitmp ) ) and if icem=1, ALBDs is set to 0.8

*** Roughness length Zrough
  1. Roughness length Zrough=0.0024 over ocean, and land if landon=0 also set as initial value in QTCM's [bndinit]
  2. if landon=1: After [VegeStep], Zrough is calculated as a function of vege height (vhmean), controlled by iSTYPE through landon in [VegeDriv]; so if vhmean=0 (VegeStep is not called at all,and initial vhmean=0), Zrough=0.05 (desert) everywhere Zrough is passed to [AtmoStep] and [LandStep] and used by CDN (then
  3. <>
  4. Evap/FTs/wind stress)

*** ice
  1. ice covered region are treated like ocean with ALBDs=0.8