Presentation is loading. Please wait.

Presentation is loading. Please wait.

Development of the Regional Arctic Climate System Model (RACM) --- Initial Implementation of VIC within CCSM4 Department of Civil and Environmental Engineering.

Similar presentations


Presentation on theme: "Development of the Regional Arctic Climate System Model (RACM) --- Initial Implementation of VIC within CCSM4 Department of Civil and Environmental Engineering."— Presentation transcript:

1 Development of the Regional Arctic Climate System Model (RACM) --- Initial Implementation of VIC within CCSM4 Department of Civil and Environmental Engineering University of Washington December, 2008 Chunmei Zhu and Dennis P. Lettenmaier

2 Model features: multiple vegetation classes in each cell; energy and water budget closure at each time step; subgrid infiltration and runoff variability; and non-linear baseflow generation. The VIC (Liang et al, 1994;1996) model is a grid-based land surface scheme designed both for inclusion in GCMs, and for use as a stand-alone macro- scale hydrological model. Hydrological Model ---

3 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. Project Progress --- Jan 2008 – June 2008 : Working on connecting VIC with CPL6

4 July 2007 – Sep 2007: working on connecting VIC with CPL7 in CCSM4_0618 Oct. 2: RACM teleconference Oct. 2007 – Nov. 15, 2007: finishing the coding of replacing CLM with VIC in CCSM4_0618 Nov. 15 - : updated the CCSM4_0618 to CCSM4_alpha38 (thanks for the help of Maslowski, Gabriele to obtain the code) Project Progress ---

5 Finished the coding and compiling of VIC in CCSM4_alpha38. Now is debuging under F configuration (ATM/LND). Current Status 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 Future Plan

6 VIC Offline Hydrologocal Simulations of the Terrestrial Arctic Regime (1979-1999) Pan-Arctic Drainage Basins / mask file (Su et al, 2005) Input forcing ---

7 CCSM CPL7 – VIC land Surface Model In CCSM4, the communication process is separated from the component integration process. All communication processes are taken over by Cpl7 and the components runs by themselves. So our coding work is mainly to replace the CLM with VIC. We expect most of coding doesn’t involve the Cpl7. Extract VIC part in MM5-VIC coupling system to replace CLM because VIC in MM5 is in image mode. Current VIC doesn’t have the capacity for parallel running. VIC runs at hourly time step. The coupling interval is hourly too. VIC produces its own output at hourly time step. The current VIC version in MM5 is VIC4.0.4. We plan to update the VIC to newer version (VIC4.1.0) after the coupling finished

8 component exporting fields to CPL Importing fields from CPL for LND preparing fields for LND on CPL a2x_ax x2l_ll a2x_aa CPLID Map Rearrange CPLLNDID CPLATMID Rearrange X2l_lx From He’ JuanXiong LAND

9 Data flow of the coupling process in LND component export data: l2x_ll x2l_ll atm_a2l clm_a2l call lnd_import_mct call clm_mapa2l import data : x2l_ll atm_l2a l2x_ll call clm_mapl2a call lnd_export_mct clm_l2a

10 Initialization CLM Land Component Lnd_init_mct Clm_init0 Initialize clump and processor decomposition Read land grid set ldomain =~ adomain Clm_init1 Initialize time constant variables Read Initial data Initialize time variant data for initial run Initialize accumulation variables Clm_init2 Initialize surface albedo Determine gridcell averaged properties to send to atm If (iamin_LNDID.and. lnd_present) then call

11 Run CLM Land Model Lnd_run_mct If (lnd_present.and. lndrun_alarm.and. iamin_LNDIND) then call DO: Loop over time steps in coupling interval ENDDO Clm_run1Clm_run2 Land model run1 phase Determine gridcell averaged properties to sent to atm Write output Write restart/initial files routing

12 CLM_INIT0 Module modified: DecompInit_glcp Initialize clump and processor decomposition To remove the landunit, column, pft subgrid features in CLM Module removed: UrbanInput Pftconrd Surfrd Initialize urban model input Read list of PFTs Read surface dataset

13 CLM_INIT1 Subroutines added: Allomem (from MM5-VIC) Initialize VIC run control variables, allocate memory to DIST_PRCP_STRUCT 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 Modules modified: InitGridCellsMod.F90 Initialize sub-grid mapping for each land grid cell To remove the subgrid features in CLM Modules to be removed: InitClmtype DGVMEcosystemDynini EcosystemDyini Dustini UrbanInitTimeConst InitTimeConst Rtmini InitAccFlds CNiniTimeVar Pftdyn_init Ndepdyn_init InitCASAPhenology

14 CLM_INIT2 Module modified: Clm_map2gcell Determine gridcell averaged properties to send to atm To remove the subgrid features in CLM Module removed: InitSurfAlb Initialize albedo VIC has its own albedo initialization based on vegetation type

15 CLM_RUN1 --- Driver1 DO: Loop over clumps DO: Loop over local gridcells ENDDO VICMODEL Provide forcings to drive VIC model, and feedback the boundary conditions.

16 CLM_RUN2 --- Driver2 Rout surface and subsurface runoff into rivers ROUT Implement VIC routing model into RACM

17 ! land -> atmosphere state variables structure type lnd2atm_type real(r8), pointer :: t_rad(:) !radiative temperature (Kelvin) real(r8), pointer :: t_ref2m(:) !2m surface air temperature (Kelvin) real(r8), pointer :: q_ref2m(:) !2m 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) 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 HF (W/m**2) [+ to atm] real(r8), pointer :: eflx_sh_tot(:) !total sensible HF (W/m**2) [+ to atm] real(r8), pointer :: eflx_lwrad_out(:) !IR (longwave) radiation (W/m**2) real(r8), pointer :: qflx_evap_tot(:)!qflx_evap(_soi + _veg) + qflx_tran_veg real(r8), pointer :: fsa(:) !solar rad absorbed (total) (W/m**2) real(r8), pointer :: nee(:) !net CO2 flux (kg C/m**2/s) [+ to atm] #if (defined DUST || defined PROGSSLT ) real(r8), pointer :: ram1(:) !aerodynamical resistance (s/m) real(r8), pointer :: fv(:) !friction velocity (m/s) (for dust model) #endif #if (defined DUST ) real(r8), pointer :: flxdst(:,:) !dust flux (size bins) #endif end type lnd2atm_type

18 VIC output variables to CPL * clm_l2a%albd(g,1) = clm_l2a%albd(g,2) = clm_l2a%albd(g,2) = clm_l2a%albd(g,2) = out_data ->albedo clm_l2a%qflx_evap_tot = out_data->evap * clm_l2a%taux = clm_l2a%tauy = out_data->wind * 1.3 * out_data- >wind * ( 0.6 + 0.07 * out_data->wind ) / 1000 clm_l2a%fsa = out_data->net_short clm_l2a%eflx_lwrad_out = out_data->rad_temp * out_data->rad_temp * out_data->rad_temp * out_data->rad_temp * 5.67 / 100000000 clm_l2a%eflx_lh_tot = out_data->latent clm_l2a%eflx_sh_tot = out_data->sensible clm_l2a%q_ref2m = out_data->surf_humid clm_l2a%t_ref2m = out_data->surf_temp clm_l2a%t_rad = out_data->rad_temp clm_l2a%h2osno = out_data->snow_depth[0]/100

19 ! atmosphere -> land variables structure type atm2lnd_type real(r8), pointer :: forc_t(:) !atmospheric temperature (Kelvin) real(r8), pointer :: forc_u(:) !atm wind speed, east direction (m/s) real(r8), pointer :: forc_v(:) !atm wind speed, north direction (m/s) real(r8), pointer :: forc_wind(:) !atmospheric wind speed real(r8), pointer :: forc_q(:) !atmospheric specific humidity (kg/kg) real(r8), pointer :: forc_hgt(:) !atmospheric reference height (m) real(r8), pointer :: forc_hgt_u(:) !obs height of wind [m] (new) real(r8), pointer :: forc_hgt_t(:) !obs height of temperature [m] (new) real(r8), pointer :: forc_hgt_q(:) !obs height of humidity [m] (new) real(r8), pointer :: forc_pbot(:) !atmospheric pressure (Pa) real(r8), pointer :: forc_th(:) !atm potential temperature (Kelvin) real(r8), pointer :: forc_vp(:) !atmospheric vapor pressure (Pa) real(r8), pointer :: forc_rho(:) !density (kg/m**3) !KO real(r8), pointer :: forc_rh(:) !atmospheric relative humidity (%) !KO real(r8), pointer :: forc_psrf(:) !surface pressure (Pa) real(r8), pointer :: forc_pco2(:) !CO2 partial pressure (Pa) real(r8), pointer :: forc_lwrad(:) !downwrd IR longwave radiation (W/m**2) real(r8), pointer :: forc_solad(:,:) !direct beam radiation (numrad) !(vis=forc_sols, nir=forc_soll ) real(r8), pointer :: forc_solai(:,:) !diffuse radiation (numrad) !(vis=forc_solsd, nir=forc_solld) real(r8), pointer :: forc_solar(:) !incident solar radiation real(r8), pointer :: forc_rain(:) !rain rate [mm/s] real(r8), pointer :: forc_snow(:) !snow rate [mm/s] real(r8), pointer :: forc_ndep(:) !nitrogen deposition rate (gN/m2/s) !KO real(r8), pointer :: rainf(:) !ALMA rain+snow [mm/s] !KO ! 4/14/05: PET ! Adding isotope code real(r8), pointer :: forc_pc13o2(:) !C13O2 partial pressure (Pa) real(r8), pointer :: forc_po2(:) !O2 partial pressure (Pa) end type atm2lnd_type

20 Modified Modules and Subroutines MM5-VIC wrf_allomem.c allocate memory to DIST_PRCP_STRUCT wrf_init_global_vic.c Initialize VIC run control variables wrf_initialize_vic_model.c Read in initial atmos fluxes, soil, veg., snowband param, initial conditions (by offline VIC running), pass them into DIST_PRCP_STRUCT wrf_vic_band.c Perform VIC calling for each cell wrf_vic_interface.c Provide forcings to drive VIC model, and feedback the boundary conditions.

21 Land Surface model in CCSM Modified Modules and Subroutines clm_map2gcell ( clm_atmlnd.F90 ) Determine gridcell averaged properties to send to atm. To remove the subgrid features in CLM. clm_compMod.F90 Remove original CLM albedo initialization controlMod.F90 Initialize CLM run control variables. Output two more running date variables (start_ymd, start_tod) decompMod.F90 Land surface descomposition into a clumped data structure. To remove subgrid features in CLM decompInitMod.F90 Initialize clump and processor decomposition. To remove the landunit, column, pft subgrid features in CLM driver.F90 The main CLM driver calling module. To replace CLM driver calling subroutines with VIC subroutines. initGridCellsMod.F90 Initialize sub-grid mapping for each land grid cell.To remove the subgrid features in CLM initializeMod.F90 Perform land model initialization. To replace CLM initialization subroutines with VIC ones.

22 Target to finish debugging VIC in CCSM4 system under F configuration by the end of January, 2009 Future Work Schedule Target to finish testing the coupled system by compare 2 simulation runs (offline VIC running and coupled VIC running with CPL7) by March, 2009 Target to finish routing model implementation in CCSM4 system by May, 2009


Download ppt "Development of the Regional Arctic Climate System Model (RACM) --- Initial Implementation of VIC within CCSM4 Department of Civil and Environmental Engineering."

Similar presentations


Ads by Google