INTERFACE:
PROGRAM program_csmDESCRIPTION:
Driver for CLM as the land component of CCSM.
This program is the driver for CLM to work as the land component of
CCSM. The flux coupler will provide all the appropriate atmospheric
forcing for the land model to run.
o the land surface model returns to the CCSM flux coupler surface
fluxes, temperatures, and albedos for only the land points on the
[lsmlon x lsmlat] grid
o the land surface model uses its own surface type data set. because
it processes only land points, this data set must correctly define
what points are land and what are not land
o the land surface model uses its own grid dimensions (lsmlon and
lsmlat). currently these must equal lsmlon and lsmlat so that there
is a direct correspondence between the atmosphere and land grids
o the zenith angle calculation is calculated for the
NEXT time step rather than the current time step. make sure
the calendar day is for the NEXT time step. make sure the
solar declination calculation is the same as in the
atmospheric model but for the NEXT time step. make sure the
calendar day is for greenwich time (see next comment).
o subroutine calendr: this generates a julian day (with fraction)
based on the time step, which is used to calculate the solar
zenith angle. this time must be at the greenwich meridian to
get the correct zenith angle. also, output from this subroutine
is used to calculate the month (1, ..., 12), day (1, ..., 31),
and year (00, ...) of the simulation.
o the land surface model calculates its own net solar radiation and
net longwave radiation at the surface. the net longwave radiation
at the surface will differ somewhat from that calculated from the
CCSM flux coupler because the cpl model will use the upward
longwave flux (or radiative temperature) from the previous time
step whereas the land surface model uses the flux for the current
time step. the net solar radiation should equal that calculated
from the flux coupler. if not, there is a problem.
USES:
use shr_kind_mod, only: r8 => shr_kind_r8 use clm_varpar !parameters use clm_varctl !run control variables use shr_orb_mod !orbital parameters and routines use shr_msg_mod !csm message passing routines and variables #if (defined SPMD) use spmdMod , only : masterproc, iam, spmd_init, mpicom #else use spmdMod , only : masterproc, iam #endif use initializeMod, only : initialize use clm_csmMod , only : csmstop_now, csm_setup, csm_shutdown use time_manager , only : advance_timestep, get_nstepARGUMENTS:
implicit none #include "gpt.inc"REVISION HISTORY:
Created by Mariana Vertenstein