Changeset 311 for branches/ORCHIDEE_EXT/ORCHIDEE/src_sechiba
- Timestamp:
- 2011-07-08T14:24:28+02:00 (14 years ago)
- Location:
- branches/ORCHIDEE_EXT/ORCHIDEE/src_sechiba
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/ORCHIDEE_EXT/ORCHIDEE/src_sechiba/condveg.f90
r257 r311 36 36 ! 37 37 LOGICAL, SAVE :: l_first_condveg=.TRUE. !! To keep first call's trace 38 LOGICAL, SAVE :: z0cdrag_ave=.FALSE. !! Chooses the method for the z0 average39 !40 REAL(r_std), SAVE :: fixed_snow_albedo !! In case we wish a fxed snow albedo41 INTEGER(i_std), PARAMETER :: ivis = 1 !! index for visible albedo42 INTEGER(i_std), PARAMETER :: inir = 2 !! index for near infrared albedo43 LOGICAL, SAVE :: impaze !! Choice on the surface parameters44 !45 REAL(r_std), SAVE :: z0_scal !! Roughness used to initialize the scheme46 REAL(r_std), SAVE :: roughheight_scal !! Height to displace the surface47 !! from the zero wind height.48 REAL(r_std), SAVE :: albedo_scal(2) !! Two albedos used to initialize the scheme49 REAL(r_std), SAVE :: emis_scal !! Surface emissivity used to initialize the scheme50 38 ! 51 39 REAL(r_std), ALLOCATABLE, SAVE :: soilalb_dry(:,:) !! albedo for the dry bare soil … … 60 48 REAL(r_std), ALLOCATABLE, SAVE, DIMENSION (:) :: albedo_glob !! Mean albedo 61 49 ! 62 LOGICAL, SAVE :: alb_bare_model !! Switch to old (albedo bare depend on soil wetness)63 !! or new one (mean of soilalb)64 50 65 51 CONTAINS … … 227 213 ! initialisation 228 214 IF (l_first_condveg) THEN 229 !230 ! Get the fixed snow albedo if needed231 !232 !233 !Config Key = CONDVEG_SNOWA234 !Config Desc = The snow albedo used by SECHIBA235 !Config Def = DEF236 !Config Help = This option allows the user to impose a snow albedo.237 !Config Default behaviour is to use the model of snow albedo238 !Config developed by Chalita (1993).239 !240 fixed_snow_albedo = undef_sechiba241 CALL getin_p('CONDVEG_SNOWA', fixed_snow_albedo)242 !243 !244 !Config Key = ALB_BARE_MODEL245 !Config Desc = Switch bare soil albedo dependent (if TRUE) on soil wetness246 !Config Def = FALSE247 !Config Help = If TRUE, the model for bare soil albedo is the old formulation.248 !Config Then it depend on the soil dry or wetness. If FALSE, it is the249 !Config new computation that is taken, it is the mean of soil albedo.250 !251 alb_bare_model=.FALSE.252 CALL getin_p('ALB_BARE_MODEL', alb_bare_model)253 215 ! 254 216 l_first_condveg=.FALSE. … … 392 354 INTEGER(i_std) :: jv 393 355 ! initialisation of variables 394 !395 396 !397 !Config Key = IMPOSE_AZE398 !Config Desc = Should the surface parameters be prescribed399 !Config Def = n400 !Config Help = This flag allows the user to impose the surface parameters401 !Config (Albedo Roughness and Emissivity). It is espacially interesting for 0D402 !Config simulations. On the globe it does not make too much sense as403 !Config it imposes the same vegetation everywhere404 !405 impaze = .FALSE.406 CALL getin_p('IMPOSE_AZE', impaze)407 356 408 357 !! … … 412 361 IF ( impaze ) THEN 413 362 ! 414 !Config Key = CONDVEG_EMIS415 !Config Desc = Emissivity of the surface for LW radiation416 !Config Def = 1.0417 !Config If = IMPOSE_AZE418 !Config Help = The surface emissivity used for compution the LE emission419 !Config of the surface in a 0-dim version. Values range between420 !Config 0.97 and 1.. The GCM uses 0.98.421 !422 emis_scal = un423 CALL getin_p('CONDVEG_EMIS', emis_scal)424 363 emis(:) = emis_scal 425 364 ! 426 365 ELSE 427 366 ! Some day it will be moisture dependent … … 436 375 ! 437 376 IF ( impaze ) THEN 438 ! 439 !Config Key = CONDVEG_ALBVIS 440 !Config Desc = SW visible albedo for the surface 441 !Config Def = 0.25 442 !Config If = IMPOSE_AZE 443 !Config Help = Surface albedo in visible wavelengths to be used 444 !Config on the point if a 0-dim version of SECHIBA is used. 445 !Config Look at the description of the forcing data for 446 !Config the correct value. 447 ! 448 albedo_scal(ivis) = 0.25_r_std 449 CALL getin_p('CONDVEG_ALBVIS', albedo_scal(ivis)) 377 ! 450 378 albedo(:,ivis) = albedo_scal(ivis) 451 !452 !Config Key = CONDVEG_ALBNIR453 !Config Desc = SW near infrared albedo for the surface454 !Config Def = 0.25455 !Config If = IMPOSE_AZE456 !Config Help = Surface albedo in near infrared wavelengths to be used457 !Config on the point if a 0-dim version of SECHIBA is used.458 !Config Look at the description of the forcing data for459 !Config the correct value.460 !461 albedo_scal(inir) = 0.25_r_std462 CALL getin_p('CONDVEG_ALBNIR', albedo_scal(inir))463 379 albedo(:,inir) = albedo_scal(inir) 380 ! 464 381 ELSE 465 382 ! … … 470 387 !! calculs de z0 471 388 !! 472 !473 !Config Key = Z0CDRAG_AVE474 !Config Desc = Average method for z0475 !Config Def = y476 !Config Help = If this flag is set to true (y) then the neutral Cdrag477 !Config is averaged instead of the log(z0). This should be478 !Config the prefered option. We still wish to keep the other479 !Config option so we can come back if needed. If this is480 !Config desired then one should set Z0CDRAG_AVE=n481 z0cdrag_ave = .TRUE.482 CALL getin_p('Z0CDRAG_AVE', z0cdrag_ave)483 389 !! 484 390 IF ( impaze ) THEN 485 391 ! 486 !Config Key = CONDVEG_Z0487 !Config Desc = Surface roughness (m)488 !Config Def = 0.15489 !Config If = IMPOSE_AZE490 !Config Help = Surface rougness to be used on the point if a 0-dim version491 !Config of SECHIBA is used. Look at the description of the forcing492 !Config data for the correct value.493 !494 z0_scal = 0.15_r_std495 CALL getin_p('CONDVEG_Z0', z0_scal)496 392 z0(:) = z0_scal 497 !498 !Config Key = ROUGHHEIGHT499 !Config Desc = Height to be added to the height of the first level (m)500 !Config Def = 0.0501 !Config If = IMPOSE_AZE502 !Config Help = ORCHIDEE assumes that the atmospheric level height is counted503 !Config from the zero wind level. Thus to take into account the roughness504 !Config of tall vegetation we need to correct this by a certain fraction505 !Config of the vegetation height. This is called the roughness height in506 !Config ORCHIDEE talk.507 !508 roughheight_scal = zero509 CALL getin_p('ROUGHHEIGHT', roughheight_scal)510 393 roughheight(:) = roughheight_scal 511 394 ! -
branches/ORCHIDEE_EXT/ORCHIDEE/src_sechiba/hydrol.f90
r282 r311 249 249 IF (l_first_hydrol) THEN 250 250 251 sneige = snowcri/mille252 253 251 IF (long_print) WRITE (numout,*) ' l_first_hydrol : call hydrol_init ' 254 252 255 253 CALL hydrol_init (kjit, ldrestart_read, kjpindex, index, rest_id, veget, soiltype, humrel,& 256 254 & vegstress, snow, snow_age, snow_nobio, snow_nobio_age, qsintveg) 255 257 256 CALL hydrol_var_init (kjpindex, veget, soiltype, mx_eau_var, shumdiag, litterhumdiag, & 258 257 & drysoil_frac, evap_bare_lim) … … 498 497 STOP 'hydrol_init' 499 498 ENDIF 499 500 ! >> july 2011 DS : add initialisation of sneige and throughfall_by_pft 501 sneige = snowcri/mille 502 throughfall_by_pft = throughfall_by_pft / 100. 500 503 501 504 ! make dynamic allocation with good dimension … … 1892 1895 INTEGER(i_std) :: ji, jv 1893 1896 REAL(r_std), DIMENSION (kjpindex,nvm) :: zqsintvegnew 1894 LOGICAL, SAVE :: firstcall=.TRUE.1895 1896 IF ( firstcall ) THEN1897 1898 throughfall_by_pft = throughfall_by_pft / 100.1899 1900 firstcall=.FALSE.1901 ENDIF1897 !!$ LOGICAL, SAVE :: firstcall=.TRUE. 1898 !!$ 1899 !!$ IF ( firstcall ) THEN 1900 !!$ 1901 !!$ throughfall_by_pft = throughfall_by_pft / 100. 1902 !!$ 1903 !!$ firstcall=.FALSE. 1904 !!$ ENDIF 1902 1905 1903 1906 -
branches/ORCHIDEE_EXT/ORCHIDEE/src_sechiba/hydrolc.f90
r282 r311 40 40 ! 41 41 LOGICAL, SAVE :: check_waterbal=.FALSE. !! The check the water balance 42 LOGICAL, SAVE :: ok_hdiff !! do horizontal diffusion?43 42 44 43 CHARACTER(LEN=80) , SAVE :: var_name !! To store variables names for I/O … … 175 174 IF (l_first_hydrol) THEN 176 175 177 sneige = snowcri/mille178 179 176 IF (long_print) WRITE (numout,*) ' l_first_hydrol : call hydrolc_init ' 180 177 … … 450 447 ENDIF 451 448 452 !Config Key = HYDROL_OK_HDIFF 453 !Config Desc = do horizontal diffusion? 454 !Config Def = n 455 !Config Help = If TRUE, then water can diffuse horizontally between 456 !Config the PFTs' water reservoirs. 457 458 ok_hdiff = .FALSE. 459 CALL getin_p('HYDROL_OK_HDIFF',ok_hdiff) 449 ! >> july 2011 add initialisation of sneige and throughfall_by_pft 450 sneige = snowcri/mille 451 throughfall_by_pft = throughfall_by_pft / 100. 460 452 461 453 ! make dynamic allocation with good dimension … … 854 846 zdsp(:,:) = dpu_cste - bqsb(:,:) / mx_eau_eau 855 847 dsp(1,1) = val_exp 856 callgetin_p('HYDROL_DSP', dsp(1,1))848 CALL getin_p('HYDROL_DSP', dsp(1,1)) 857 849 IF (dsp(1,1) == val_exp) THEN 858 850 dsp(:,:) = zdsp(:,:) … … 1458 1450 INTEGER(i_std) :: ji, jv 1459 1451 REAL(r_std), DIMENSION (kjpindex,nvm) :: zqsintvegnew 1460 LOGICAL, SAVE :: firstcall=.TRUE.1461 1462 IF ( firstcall ) THEN1463 1464 throughfall_by_pft = throughfall_by_pft / 100.1465 1466 firstcall=.FALSE.1467 ENDIF1452 !!$ LOGICAL, SAVE :: firstcall=.TRUE. 1453 !!$ 1454 !!$ IF ( firstcall ) THEN 1455 !!$ 1456 !!$ throughfall_by_pft = throughfall_by_pft / 100. 1457 !!$ 1458 !!$ firstcall=.FALSE. 1459 !!$ ENDIF 1468 1460 1469 1461 ! calcul de qsintmax a prevoir a chaque pas de temps -
branches/ORCHIDEE_EXT/ORCHIDEE/src_sechiba/intersurf.f90
r281 r311 2961 2961 control_flags%ok_pheno = .TRUE. 2962 2962 ! 2963 !>> july 2011 2964 ! DS: activation of sub-models of ORCHIDEE 2965 CALL activate_sub_models(control_flags%ok_sechiba, control_flags%river_routing,control_flags%ok_stomate) 2966 ! Vegetation configuration(impose_veg, land_use, lcchnage...previously in slowproc) 2967 CALL veget_config 2963 2968 ! 2964 2969 RETURN -
branches/ORCHIDEE_EXT/ORCHIDEE/src_sechiba/routing.f90
r277 r311 67 67 REAL(r_std), PARAMETER :: maxevap_lake = 7.5/86400. 68 68 ! 69 INTEGER(i_std), PARAMETER :: undef_int = 99999999970 !71 69 REAL(r_std),SAVE :: dt_routing 72 !73 ! Logicals to control model configuration74 !75 LOGICAL, SAVE :: doirrigation = .FALSE.76 LOGICAL, SAVE :: dofloodplains = .FALSE.77 !78 70 ! 79 71 ! The variables describing the basins and their routing, need to be in the restart file. … … 519 511 num_largest = 50 520 512 CALL getin_p('ROUTING_RIVERS', num_largest) 521 !522 !Config Key = DO_IRRIGATION523 !Config Desc = Should we compute an irrigation flux524 !Config Def = FALSE525 !Config Help = This parameters allows the user to ask the model526 !Config to compute an irigation flux. This performed for the527 !Config on very simple hypothesis. The idea is to have a good528 !Config map of irrigated areas and a simple function which estimates529 !Config the need to irrigate.530 !531 doirrigation = .FALSE.532 CALL getin_p('DO_IRRIGATION', doirrigation)533 !534 !Config Key = DO_FLOODPLAINS535 !Config Desc = Should we include floodplains536 !Config Def = FALSE537 !Config Help = This parameters allows the user to ask the model538 !Config to take into account the flood plains and return539 !Config the water into the soil moisture. It then can go540 !Config back to the atmopshere. This tried to simulate541 !Config internal deltas of rivers.542 !543 dofloodplains = .FALSE.544 CALL getin_p('DO_FLOODPLAINS', dofloodplains)545 !546 513 ! 547 514 ! In order to simplify the time cascade check that dt_routing -
branches/ORCHIDEE_EXT/ORCHIDEE/src_sechiba/slowproc.f90
r277 r311 50 50 ! 51 51 INTEGER(i_std) , SAVE :: veget_update=0 !! update frequency in years for landuse 52 INTEGER(i_std) , SAVE :: veget_year_orig=0 !! first year for landuse53 LOGICAL, SAVE :: land_use = .FALSE. ! Land Use54 LOGICAL, SAVE :: veget_reinit=.FALSE. !! To change LAND USE file in a run.55 !56 LOGICAL, SAVE :: read_lai = .FALSE. ! Lai Map57 LOGICAL, SAVE :: old_lai = .FALSE. ! Old Lai Map interpolation58 LOGICAL, SAVE :: impveg = .FALSE.59 LOGICAL, SAVE :: impsoilt = .FALSE.60 LOGICAL, SAVE :: old_veget = .FALSE. ! Old veget Map interpolation61 52 ! 62 53 REAL(r_std), ALLOCATABLE, SAVE, DIMENSION (:) :: clayfraction … … 502 493 CHARACTER(LEN=80) :: var_name !! To store variables names for I/O 503 494 INTEGER(i_std) :: ji, jv, ier 504 LOGICAL, INTENT(out) :: read_lai 495 ! DS 08072011 change in intent(in) 496 LOGICAL, INTENT(in) :: read_lai 505 497 REAL(r_std) :: frac_nobio1 !! temporary 506 REAL(r_std) :: stempdiag_bid !! only needed for an initial LAI507 !! if there is no restart file508 498 REAL(r_std), DIMENSION(kjpindex,nbdl) :: stempdiag2_bid !! matrix to store stempdiag_bid 509 499 CHARACTER(LEN=4) :: vegsoil_dist !! Flag to choose the soil/vegetation distribution … … 587 577 CALL setvar_p (day_counter, val_exp, 'SECHIBA_DAY', zero) 588 578 ! 589 !Config Key = LAI_MAP590 !Config Desc = Read the LAI map591 !Config Def = n592 !Config Help = It is possible to read a 12 month LAI map which will593 !Config then be interpolated to daily values as needed.594 !595 read_lai = .FALSE.596 CALL getin_p('LAI_MAP',read_lai)597 !598 579 var_name= 'veget' 599 580 CALL ioconf_setatt('UNITS', '-') … … 613 594 CALL restget_p (rest_id, var_name, nbp_glo, nnobio, 1, kjit, .TRUE., frac_nobio, "gather", nbp_glo, index_g) 614 595 ! 615 !Config Key = LAND_USE616 !Config Desc = Read a land_use vegetation map617 !Config Def = n618 !Config Help = pft values are needed, max time axis is 293619 !620 land_use = .FALSE.621 596 veget_update=0 622 CALL getin_p('LAND_USE',land_use) 597 623 598 IF (land_use) THEN 624 !625 !Config Key = VEGET_YEAR626 !Config Desc = Year of the land_use vegetation map to be read (0 == NO TIME AXIS)627 !Config If = LAND_USE628 !Config Def = 282629 !Config Help = First year for landuse vegetation (2D map by pft).630 !Config Help If VEGET_YEAR == 0, this means there is no time axis.631 !632 veget_year_orig=282633 CALL getin_p('VEGET_YEAR', veget_year_orig)634 !635 !Config Key = VEGET_REINIT636 !Config Desc = booleen to indicate that a new LAND USE file will be used.637 !Config If = LAND_USE638 !Config Def = n639 !Config Help = The parameter is used to bypass veget_year count640 !Config Help and reinitialize it with VEGET_YEAR parameter.641 !Config Help Then it is possible to change LAND USE file.642 !643 veget_reinit = .FALSE.644 CALL getin_p('VEGET_REINIT', veget_reinit)645 !646 599 ! 647 600 var_name= 'veget_year' … … 678 631 WRITE(numout,*) "Update frequency for land use in years :",veget_update 679 632 ! 680 !Config Key = LAND_COVER_CHANGE681 !Config Desc = treat land use modifications682 !Config If = LAND_USE683 !Config Def = y684 !Config Help = With this variable, you can use a Land Use map685 !Config to simulate anthropic modifications such as686 !Config deforestation.687 !688 lcchange = .TRUE.689 CALL getin_p('LAND_COVER_CHANGE', lcchange)690 633 IF ( veget_update == 0 .AND. lcchange ) THEN 691 634 CALL ipslerr (2,'slowproc_init', & … … 750 693 CALL setvar_p (zcanop, val_exp, 'SECHIBA_ZCANOP', 0.5_r_std) 751 694 ! 752 !Config Key = HYDROL_SOIL_DEPTH 753 !Config Desc = Total depth of soil reservoir 754 !Config Def = 2. 755 ! 756 dpu_cste=2. 757 CALL getin_p ("HYDROL_SOIL_DEPTH", dpu_cste) 695 ! Initialisation of dpu 758 696 dpu(:)=dpu_cste 759 697 !MM, T. d'O. : before in constantes_soil : … … 783 721 784 722 ! 785 ! Interception reservoir coefficient 786 ! 787 !Config Key = 'SECHIBA_QSINT' 788 !Config Desc = Interception reservoir coefficient 789 !Config Def = 0.1 790 !Config Help = Transforms leaf area index into size of interception reservoir 791 !Config for slowproc_derivvar or stomate 792 793 !!$ qsintcst = 0.1 794 CALL getin_p('SECHIBA_QSINT', qsintcst) 795 WRITE(numout, *)' SECHIBA_QSINT, qsintcst = ', qsintcst 796 723 !!$ WRITE(numout, *)' SECHIBA_QSINT, qsintcst = ', qsintcst 797 724 ! 798 725 ! Time step of STOMATE and LAI update … … 807 734 dt_slow = one_day 808 735 CALL getin_p('DT_SLOW', dt_slow) 809 ! 810 811 !Config Key = SLOWPROC_LAI_TEMPDIAG 812 !Config Desc = Temperature used for the initial guess of LAI 813 !Config Def = 280. 814 !Config Help = If there is no LAI in the restart file, we may need 815 !Config a temperature that is used to guess the initial LAI. 816 ! 817 stempdiag_bid = 280. 818 CALL getin_p('SLOWPROC_LAI_TEMPDIAG',stempdiag_bid) 819 ! 736 820 737 ! 821 738 ! get restart value if none were found in the restart file 822 739 ! 823 !Config Key = AGRICULTURE 824 !Config Desc = agriculture allowed? 825 !Config Def = y 826 !Config Help = With this variable, you can determine 827 !Config whether agriculture is allowed 828 ! 829 agriculture = .TRUE. 830 CALL getin_p('AGRICULTURE', agriculture) 831 IF ( .NOT. agriculture .AND. land_use ) THEN 832 CALL ipslerr (2,'slowproc_init', & 833 & 'Problem with agriculture desactivated and Land Use activated.',& 834 & 'Are you sure ?', & 835 & '(check your parameters).') 836 ENDIF 837 838 ! 839 !Config Key = IMPOSE_VEG 840 !Config Desc = Should the vegetation be prescribed 841 !Config Def = n 842 !Config Help = This flag allows the user to impose a vegetation distribution 843 !Config and its characterisitcs. It is espacially interesting for 0D 844 !Config simulations. On the globe it does not make too much sense as 845 !Config it imposes the same vegetation everywhere 846 ! 847 impveg = .FALSE. 848 CALL getin_p('IMPOSE_VEG', impveg) 740 !!$ IF ( .NOT. agriculture .AND. land_use ) THEN 741 !!$ CALL ipslerr (2,'slowproc_init', & 742 !!$ & 'Problem with agriculture desactivated and Land Use activated.',& 743 !!$ & 'Are you sure ?', & 744 !!$ & '(check your parameters).') 745 !!$ ENDIF 849 746 ! 850 747 IF ( impveg ) THEN … … 899 796 CALL setvar_p (lai, val_exp, 'SECHIBA_LAI', llaimax) 900 797 901 !902 !Config Key = IMPOSE_SOILT903 !Config Desc = Should the soil typ be prescribed904 !Config Def = n905 !Config If = IMPOSE_VEG906 !Config Help = This flag allows the user to impose a soil type distribution.907 !Config It is espacially interesting for 0D908 !Config simulations. On the globe it does not make too much sense as909 !Config it imposes the same soil everywhere910 !911 impsoilt = .FALSE.912 CALL getin_p('IMPOSE_SOILT', impsoilt)913 798 IF (impsoilt) THEN 914 799 !Config Key = SOIL_FRACTIONS … … 958 843 959 844 IF ( .NOT. land_use ) THEN 960 961 !Config Key = SLOWPROC_VEGET_OLD_INTERPOL962 !Config Desc = Flag to use old "interpolation" of vegetation map.963 !Config If = NOT IMPOSE_VEG and NOT LAND_USE964 !Config Def = FALSE965 !Config Help = If you want to recover the old (ie orchidee_1_2 branch)966 !Config "interpolation" of vegetation map.967 !968 old_veget = .FALSE.969 CALL getin_p('SLOWPROC_VEGET_OLD_INTERPOL',old_veget)970 845 971 846 ! The interpolation of vegetation has changed. … … 1092 967 ! 1093 968 IF (read_lai) THEN 1094 1095 !Config Key = SLOWPROC_LAI_OLD_INTERPOL1096 !Config Desc = Flag to use old "interpolation" of LAI1097 !Config If = LAI_MAP1098 !Config Def = FALSE1099 !Config Help = If you want to recover the old (ie orchidee_1_2 branch)1100 !Config "interpolation" of LAI map.1101 !1102 old_lai = .FALSE.1103 CALL getin_p('SLOWPROC_LAI_OLD_INTERPOL',old_lai)1104 969 1105 970 ! … … 4670 4535 ! 79 warm C4 woody savanna 4671 4536 vegcorr(79,:) = & 4672 & (/0.0, 0.0, 0.4, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0. 6, 0.0, 0.0, 0.0/)4537 & (/0.0, 0.0, 0.4, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.6, 0.0, 0.0/) 4673 4538 ! 80 cool woody savanna 4674 4539 vegcorr(80,:) = &
Note: See TracChangeset
for help on using the changeset viewer.