Download presentation
Presentation is loading. Please wait.
Published byHomer Branden Stafford Modified over 8 years ago
1
Climate System Component Studies via One-way Coupling Experiments VIC Offline Simulations of the Pan-Arctic Domain RACM Workshop University of Colorado May 15, 2008 Chunmei Zhu Dennis Lettenmaier
2
VIC Offline Streamflow Simulations of the Terrestrial Arctic Regime (1979-1999) Pan-Arctic Drainage Basins / mask file (Su et al, 2005)
3
Arctic River Network over 100km grid system Streamflow observations, satellite-based snow cover extent, observed dates of lake freeze-up and break- up, and sited monitored summer permafrost maximum active layer thickness were used to evaluate various simulated hydrologic variables.
4
Mean monthly hydrograph (1979-1999) Lena Aldan at Verhoyanski Perevoz (Area:696000.00 km 2 ) Lena at Kusur SimulatedObserved Lena at Kusur (Area:2430000.00 km 2 ) Aldan at Verhoyanski Perevoz (Area:696000.00 km 2 )
5
Mean monthly fraction of area covered by snow Observed Lena Mackenzie Ob Yenisei Yukon Ob Yukon Yenisei Mean number of days with snow 1980-1999
6
Comparison of Julian day of lake freeze-up and break-up The VIC model was able to reproduce the hydrologic processes in the Arctic region.
7
Development of the Regional Arctic Climate System Model (RACM) --- Initial Implementation of VIC within WRF Department of Civil and Environmental Engineering University of Washington May, 2008
8
WRF couples with VIC through CCSM Coupler (CPL6) Using coupler allows different configurations for different component models. For example, VIC can run (hourly) at different time step with WRF (in seconds). Coupling through CPL6 maintains the component codes in close to their original forms, which takes much less recoding work than subroutinized coupling. Componentized coupling through coupler presenting opportunities for concurrent execution of components, but subroutinized coupling severely limits these opportunities. Coupling through CPL6 has the potential cost of some execution efficiency. However, component models typically exchange a small amount of data at coupling intervals (hourly) which is much longer than simulation time step (in seconds for WRF).
9
CCSM Flux Coupler – CLM land Surface Model Program_csm.F90 Driver for CLM as the land component of CCSM csm_setup Initialize MPI communication groups for component models (MPH_processors_map.in) initialize Initialize land model Initialize communication with flux coupler driver Land surface model driver DO: time stepping loop END DO
10
initialize Control_init Initialize run control variables Timemgr_init Initialize time manager Csm_recvgrid Get grid and land mask back from flux coupler InitDecomp Initialize clump and processor decomposition Csm_initialize Initialize flux coupler communication Csm_sendalb Send first land model data to flux coupler initAccClmtype Initialize time-varying data mksrfdat Make surface boundary data
11
driver Provides the main CLM driver calling sequence Csm_dosndrcv (doalb) Coupler Receive Determine if information should be sent/received to/from flux coupler If (dorecv) then call csm_recv() Get atmospheric state and fluxes from flux coupler (only when the atm does a solar radiation computation) Coupler Send If (csm_doflxave) call csm_flxave() Average fluxes over interval between the send and receive calls If (dosend) call csm_send() Send fields to flux coupler (only when the time steps before the atm does a solar radiation computation)
12
! land -> atmosphere state variables structure !---------------------------------------------------- type lnd2atm_state_type real(r8), pointer :: t_rad(:) !radiative temperature (Kelvin) real(r8), pointer :: t_ref2m(:) !2 m height surface air temperature (Kelvin) real(r8), pointer :: q_ref2m(:) !2 m height surface specific humidity (kg/kg) real(r8), pointer :: h2osno(:) !snow water (mm H2O) real(r8), pointer :: albd(:,:) !(numrad) surface albedo (direct) real(r8), pointer :: albi(:,:) !(numrad) surface albedo (diffuse) end type lnd2atm_state_type !---------------------------------------------------- ! land -> atmosphere flux variables structure !---------------------------------------------------- type lnd2atm_flux_type real(r8), pointer :: taux(:) !wind stress: e-w (kg/m/s**2) real(r8), pointer :: tauy(:) !wind stress: n-s (kg/m/s**2) real(r8), pointer :: eflx_lh_tot(:) !total latent heat flux (W/m8*2) [+ to atm] real(r8), pointer :: eflx_sh_tot(:) !total sensible heat flux (W/m**2) [+ to atm] real(r8), pointer :: eflx_lwrad_out(:) !emitted infrared (longwave) radiation (W/m**2) real(r8), pointer :: qflx_evap_tot(:) !qflx_evap_soi + qflx_evap_veg + qflx_tran_veg real(r8), pointer :: fsa(:) !solar radiation absorbed (total) (W/m**2) end type lnd2atm_flux_type
13
! atmosphere -> land state variables structure !---------------------------------------------------- type atm2lnd_state_type forc_t(:) !atmospheric temperature (Kelvin) forc_u(:) !atmospheric wind speed in east direction (m/s) forc_v(:) !atmospheric wind speed in north direction (m/s) forc_wind(:) !atmospheric wind speed forc_q(:) !atmospheric specific humidity (kg/kg) forc_hgt(:) !atmospheric reference height (m) forc_hgt_u(:) !observational height of wind [m] (new) forc_hgt_t(:) !observational height of temperature [m] (new) forc_hgt_q(:) !observational height of humidity [m] (new) forc_pbot(:) !atmospheric pressure (Pa) forc_th(:) !atmospheric potential temperature (Kelvin) forc_vp(:) !atmospheric vapor pressure (Pa) forc_rho(:) !density (kg/m**3) forc_co2(:) !atmospheric CO2 concentration (Pa) forc_o2(:) !atmospheric O2 concentration (Pa) forc_psrf(:) !surface pressure (Pa) end type atm2lnd_state_type
14
! atmosphere -> land flux variables structure !---------------------------------------------------- type atm2lnd_flux_type forc_lwrad(:) !downward infrared (longwave) radiation (W/m**2) forc_solad(:,:) !direct beam radiation (vis=forc_sols, nir=forc_soll ) (numrad) forc_solai(:,:) !diffuse radiation (vis=forc_solsd, nir=forc_solld) (numrad) forc_solar(:) !incident solar radiation forc_rain(:) !rain rate [mm/s] forc_snow(:) !snow rate [mm/s] end type atm2lnd_flux_type
15
CCSM Flux Coupler – VIC land Surface Model Extract VIC part in MM5-VIC coupling system to be connected with flux coupler because VIC in MM5 is in image mode. Connecting and coding CPL6 and VIC in current CCSM system coding structure. Current VIC doesn’t have the capacity for parallel running. VIC and flux coupler exchange the fields at hourly VIC running time step. This allows WRF and VIC running at different time step. The current VIC version in MM5 is VIC4.0.4. We plan to update the VIC to newer version after the coupling finished
16
CCSM Flux Coupler – VIC land Surface Model Program_vic.F90 Driver for VIC as the land component of RACM racm_setup Initialize MPI communication groups for flux coupler (MPH_processors_map.in) initialize Initialize VIC land model Initialize communication with flux coupler driver Land surface model driver DO: time stepping loop END DO
17
initialize Allomem (from MM5-VIC) Initialize VIC run control variables, allocate memory to DIST_PRCP_STRUCT Timemgr_init Initialize time manager Csm_recvgrid Get grid and land mask back from input grid file : LANDGRID.INPUT InitDecomp Initialize clump and processor decomposition Csm_initialize Send first comtrol data to flux coupler. Initialize flux coupler communication Csm_sendalb Send first land model data to flux coupler Inivic (from MM5-VIC) Read in initial atmos fluxes, soil, veg., snowband param, initial conditions (by offline VIC running), pass them into DIST_PRCP_STRUCT Control_init Initialize run control variables (start_ymd etc.)
18
driver Provides the main VIC driver calling sequence Coupler Receive If (dorecv) then call csm_recv() Get atmospheric state and fluxes from flux coupler Coupler Send If (dosend) call csm_send() Send fields to flux coupler VIC and flux coupler exchange the fields at hourly VIC running time step Currently get atmospheric state and fluxes from met file: VICMET.INPUT VICMODEL Provide forcings to drive VIC model, and feedback the boundary conditions.
19
! atmosphere -> land state variables structure !---------------------------------------------------- type atm2lnd_state_type forc_wind(:) !atmospheric wind speed forc_hgt_t(:) !observational height of temperature [m] (new) forc_pbot(:) !atmospheric pressure (Pa) forc_vp(:) !atmospheric vapor pressure (Pa) forc_rho(:) !density (kg/m**3) end type atm2lnd_state_type ! atmosphere -> land flux variables structure !---------------------------------------------------- type atm2lnd_flux_type forc_lwrad(:) !downward infrared (longwave) radiation (W/m**2) forc_solar(:) !incident solar radiation forc_rain(:) !rain rate [mm/s] end type atm2lnd_flux_type
20
Gridcell Type Structure type gridcell_type ! topological mapping functionality integer, pointer :: itype(:) !gridcell type real(r8), pointer :: area(:) !total land area for this gridcell (km^2) real(r8), pointer :: wtglob(:) !weight for this gridcell relative to global area (0-1) integer, pointer :: ixy(:) !xy lon index integer, pointer :: jxy(:) !xy lat index integer, pointer :: snindex(:) !corresponding gridcell index in s->n and east->west order real(r8), pointer :: lat(:) !latitude (radians) real(r8), pointer :: lon(:) !longitude (radians) real(r8), pointer :: latdeg(:) !latitude (degrees) real(r8), pointer :: londeg(:) !longitude (degrees) real(r8), pointer :: landfrac(:) !fractional land for this gridcell ! state variables defined at the gridcell level type(atm2lnd_state_type) :: a2ls !atmospheric state variables required by the land type(lnd2atm_state_type) :: l2as !land state variables required by the atmosphere ! flux variables defined at the gridcell level type(atm2lnd_flux_type) :: a2lf !atmospheric flux variables required by the land type(lnd2atm_flux_type) :: l2af !land flux variables required by the atmosphere end type gridcell_type
21
cpl_fields_c2l_fields integer(IN),parameter,public :: cpl_fields_c2l_total = 8 character(*), parameter,public :: cpl_fields_c2l_states = & &'Sa_w& &:Sa_tbot& &:Sa_dens& &:Sa_pbot& &:Sa_pslvp' character(*), parameter,public :: cpl_fields_c2l_fluxes = & &'Faxa_lwdn& &:Faxa_swdn& &:Faxa_rain' !----- atm states ----- integer(IN),parameter,public :: cpl_fields_c2l_w = 1 ! bottom atm level wind peed integer(IN),parameter,public :: cpl_fields_c2l_tbot = 2 ! bottom atm level temp integer(IN),parameter,public :: cpl_fields_c2l_dens = 3 ! bottom atm level air dens integer(IN),parameter,public :: cpl_fields_c2l_pbot = 4 ! sea level atm pressure integer(IN),parameter,public :: cpl_fields_c2l_pslvp = 5 ! sea level vapor pressure !----- computed by atm ----- integer(IN),parameter,public :: cpl_fields_c2l_lwdn = 6 ! downward longwave heat flux integer(IN),parameter,public :: cpl_fields_c2l_swdn = 7 ! downward shortwave heat flux integer(IN),parameter,public :: cpl_fields_c2l_rain = 8 ! precip
22
Modified Modules and Subroutines Coupler Flux Coupler cpl_contract_mod.F90 cpl_interface_mod.F90 cpl_fields_mod.F90 MM5-VIC wrf_allomem.c wrf_init_global_vic.c wrf_initialize_vic_model.c wrf_vic_band.c wrf_vic_interface.c wrf_close_files.c Land Surface model in CCSM clm_csmMod.F90 clmtype.F90 decompMod.F90 driver.F90 initGridCellsMod.F90 initializeMod.F90 lnd2atmMod.F90 program_csm.F90
23
The coding and compiling have been finished now. Testing the coupled system in ARSC: I input forcing + offline VIC II input forcing + coupler + coupled VIC We can compare these 2 simulation runs to examine the coding accuracy Progress Future Plan
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.