Changeset 366


Ignore:
Timestamp:
2011-08-01T11:23:28+02:00 (13 years ago)
Author:
didier.solyga
Message:

Externalized stemdiag_bid. Synchronize intersurf.f90 and stomate.f90 with revisions 351 and 352 of the trunk

Location:
branches/ORCHIDEE_EXT/ORCHIDEE
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • branches/ORCHIDEE_EXT/ORCHIDEE/src_parameters/constantes.f90

    r360 r366  
    17511751        CALL getin_p('MIN_VEGFRAC',min_vegfrac) 
    17521752        ! 
     1753        !Config Key  = STEMPDIAG_BID  
     1754        !Config Desc = only needed for an initial LAI if there is no restart file 
     1755        !Config If   = OK_SECHIBA  
     1756        !Config Def  = 280. 
     1757        !Config Help =  
     1758        !Config Units =  
     1759        CALL getin_p('STEMPDIAG_BID',stempdiag_bid) 
     1760        ! 
    17531761        !Config Key  = SOILTYPE_DEFAULT 
    17541762        !Config Desc = Default soil texture distribution in the following order : sand, loam and clay 
  • branches/ORCHIDEE_EXT/ORCHIDEE/src_sechiba/intersurf.f90

    r354 r366  
    3636 
    3737  PRIVATE 
    38   PUBLIC :: intersurf_main, stom_define_history, intsurf_time 
     38  PUBLIC :: intersurf_main, stom_define_history, stom_IPCC_define_history, intsurf_time 
    3939 
    4040  INTERFACE intersurf_main 
     
    6363  REAL(r_std) :: julian0 
    6464  ! 
    65   LOGICAL :: check_INPUTS = .FALSE.         !! (very) long print of INPUTs in intersurf  
     65  LOGICAL, PARAMETER :: check_INPUTS = .FALSE.         !! (very) long print of INPUTs in intersurf  
    6666  LOGICAL, SAVE :: OFF_LINE_MODE = .FALSE.  
     67  LOGICAL, SAVE :: check_time = .FALSE. 
     68  PUBLIC check_time, l_first_intersurf 
    6769  ! 
    6870!!$ DS : ajout du flag IMPOSE_PARAM 
     
    26502652    REAL(r_std), INTENT(in)                     :: dt        !! Time step 
    26512653    ! 
    2652     ! LOCAL 
    2653     LOGICAL     :: check=.FALSE. 
    26542654 
    26552655    IF (l_first_intersurf) THEN 
     
    26632663       ENDIF 
    26642664 
    2665        IF (check) THEN 
     2665       IF (check_time) THEN 
    26662666          write(numout,*) "calendar_str =",calendar_str 
    26672667          write(numout,*) "one_year=",one_year,", one_day=",one_day 
     
    26712671 
    26722672    ! 
    2673     IF (check) & 
     2673    IF (check_time) & 
    26742674         WRITE(numout,*) "---"  
    26752675    ! Dans diffuco (ie date0 == date0_shift !!)  
     
    26852685!!$       julian_diff = in_julian 
    26862686!!$       month_len = ioget_mon_len (year,month) 
    2687 !!$       IF (check) THEN 
     2687!!$       IF (check_time) THEN 
    26882688!!$          write(numout,*) "in_julian, jur, julian_diff=",in_julian, jur, julian_diff 
    26892689!!$          write(numout,*) 'DATE ymds', year, month,'(',month_len,'d)', day, sec, '-- stp --', istp 
     
    26972697       sec = NINT((julian_diff-REAL(INT(julian_diff)))*one_day) 
    26982698       month_len = ioget_mon_len (year,month) 
    2699        IF (check) THEN 
     2699       IF (check_time) THEN 
    27002700          write(numout,*) "2 in_julian, julian0, julian_diff=",in_julian, julian0, julian_diff 
    27012701          write(numout,*) '2 DATE ymds', year, month,'(',month_len,'d)', day, sec, '-- stp --', istp 
     
    27072707!!$       julian_diff = in_julian 
    27082708!!$       month_len = ioget_mon_len (year,month) 
    2709 !!$       IF (check) THEN 
     2709!!$       IF (check_time) THEN 
    27102710!!$          write(numout,*) "in_julian=",in_julian, jur, julian_diff 
    27112711!!$          write(numout,*) 'DATE ymds', year, month,'(',month_len,'d)', day, sec, '-- stp --', istp 
     
    27192719!!$       sec = NINT((julian_diff-REAL(INT(julian_diff)))*one_day) 
    27202720!!$       month_len = ioget_mon_len (year,month) 
    2721 !!$       IF (check) THEN 
     2721!!$       IF (check_time) THEN 
    27222722!!$          write(numout,*) "2 in_julian, jur, julian_diff=",in_julian, jur, julian_diff 
    27232723!!$          write(numout,*) '2 DATE ymds', year, month,'(',month_len,'d)', day, sec, '-- stp --', istp 
     
    27252725 
    27262726 
    2727 !!$       IF (check) & 
     2727!!$       IF (check_time) & 
    27282728!!$            WRITE(numout,*) "-" 
    27292729 
     
    27362736       julian_diff = in_julian 
    27372737       month_len = ioget_mon_len (year,month) 
    2738        IF (check) THEN 
     2738       IF (check_time) THEN 
    27392739          write(numout,*) "in_julian=",in_julian, julian0, julian_diff 
    27402740          write(numout,*) 'DATE ymds', year, month,'(',month_len,'d)', day, sec, '-- stp --', istp 
    27412741       ENDIF 
    27422742    ENDIF 
    2743 !!$    IF (check) & 
     2743!!$    IF (check_time) & 
    27442744!!$         WRITE(numout,*) "---"  
    27452745 
  • branches/ORCHIDEE_EXT/ORCHIDEE/src_stomate/stomate.f90

    r335 r366  
    2828  IMPLICIT NONE 
    2929  PRIVATE 
    30   PUBLIC stomate_main,stomate_clear 
     30  PUBLIC stomate_main,stomate_clear,init_forcing,forcing_read 
    3131  ! 
    3232  INTEGER,PARAMETER :: r_typ =nf90_real4 
     
    262262  REAL(r_std),ALLOCATABLE,DIMENSION(:,:)     :: precip_fm 
    263263  REAL(r_std),ALLOCATABLE,DIMENSION(:,:,:)   :: gpp_daily_fm 
    264   REAL(r_std),ALLOCATABLE,DIMENSION(:,:,:,:) :: resp_maint_part_fm 
    265264  REAL(r_std),ALLOCATABLE,DIMENSION(:,:,:)   :: veget_fm 
    266265  REAL(r_std),ALLOCATABLE,DIMENSION(:,:,:)   :: veget_max_fm 
    267266  REAL(r_std),ALLOCATABLE,DIMENSION(:,:,:)   :: lai_fm 
     267  PUBLIC clay_fm, humrel_daily_fm, litterhum_daily_fm, t2m_daily_fm, t2m_min_daily_fm, tsurf_daily_fm, tsoil_daily_fm, & 
     268       soilhum_daily_fm, precip_fm, gpp_daily_fm, veget_fm, veget_max_fm, lai_fm 
    268269 
    269270  REAL(r_std),ALLOCATABLE,DIMENSION(:,:)     :: clay_fm_g 
     
    277278  REAL(r_std),ALLOCATABLE,DIMENSION(:,:)     :: precip_fm_g 
    278279  REAL(r_std),ALLOCATABLE,DIMENSION(:,:,:)   :: gpp_daily_fm_g 
    279   REAL(r_std),ALLOCATABLE,DIMENSION(:,:,:,:) :: resp_maint_part_fm_g 
    280280  REAL(r_std),ALLOCATABLE,DIMENSION(:,:,:)   :: veget_fm_g 
    281281  REAL(r_std),ALLOCATABLE,DIMENSION(:,:,:)   :: veget_max_fm_g 
     
    285285  LOGICAL,ALLOCATABLE,SAVE,DIMENSION(:)      :: nf_written 
    286286  INTEGER(i_std),ALLOCATABLE,SAVE,DIMENSION(:) :: nf_cumul 
     287  PUBLIC isf, nf_written 
     288   
    287289  ! first call 
    288290  LOGICAL,SAVE :: l_first_stomate = .TRUE. 
     
    493495    ! for forcing file: "daily" gpp 
    494496    REAL(r_std),DIMENSION(kjpindex,nvm)           :: gpp_daily_x 
    495     ! for forcing file: "daily" auto resp 
    496     REAL(r_std),DIMENSION(kjpindex,nvm,nparts)    :: resp_maint_part_x 
    497497    ! total "vegetation" cover 
    498498    REAL(r_std),DIMENSION(kjpindex)               :: cvegtot 
     
    514514    INTEGER(i_std),SAVE        :: nparan            ! Number of time steps per year for carbon spinup 
    515515    INTEGER(i_std),SAVE        :: nbyear 
    516     INTEGER(i_std),PARAMETER   :: nparanmax=36      ! Number max of time steps per year for carbon spinup 
     516    INTEGER(i_std),PARAMETER   :: nparanmax=366     ! Number max of time steps per year for carbon spinup 
    517517    REAL(r_std)                 :: sf_time 
    518     INTEGER(i_std),SAVE        :: iatt=1 
     518    INTEGER(i_std),SAVE        :: iatt 
    519519    INTEGER(i_std),SAVE        :: iatt_old=1 
    520520    INTEGER(i_std)             :: max_totsize, totsize_1step,totsize_tmp 
     
    587587            rest_id_stom, hist_id_stom, hist_id_stom_IPCC) 
    588588 
    589        co2_flux_monthly(:,:) = zero 
    590589       ! 
    591590       ! 1.2 read PFT data 
     
    725724                  &     +SIZE(precip_daily)*KIND(precip_daily) & 
    726725                  &     +SIZE(gpp_daily_x)*KIND(gpp_daily_x) & 
    727                   &     +SIZE(resp_maint_part_x)*KIND(resp_maint_part_x) & 
    728726                  &     +SIZE(veget)*KIND(veget) & 
    729727                  &     +SIZE(veget_max)*KIND(veget_max) & 
     
    812810                ier = NF90_DEF_VAR (forcing_id,'lai', & 
    813811                     &                            r_typ,(/ d_id(1),d_id(3),d_id(6) /),vid) 
    814                 ier = NF90_DEF_VAR (forcing_id,'resp_maint_part', & 
    815                      &                       r_typ,(/ d_id(1),d_id(3),d_id(7),d_id(6) /),vid) 
    816812                ier = NF90_ENDDEF (forcing_id) 
    817813                !- 
     
    866862             !Config  Key  = FORCESOIL_STEP_PER_YEAR 
    867863             !Config  Desc = Number of time steps per year for carbon spinup. 
    868              !Config  Def  = 12 
     864             !Config  Def  = 365 
    869865             !Config  Help = Number of time steps per year for carbon spinup. 
    870              nparan = 12 
     866             nparan = 365 
    871867             CALL getin_p('FORCESOIL_STEP_PER_YEAR', nparan) 
    872868 
     
    14031399             ENDDO 
    14041400             sf_time = MODULO(REAL(date,r_std)-1,one_year*REAL(nbyear,r_std)) 
    1405              iatt=FLOOR(sf_time/dt_forcesoil)+1 
    1406              IF ((iatt < 1) .OR. (iatt > nparan*nbyear)) THEN 
    1407                 WRITE(numout,*) 'Error with iatt=',iatt 
    1408                 CALL ipslerr (3,'stomate', & 
    1409                      &          'Error with iatt.', '', & 
    1410                      &          '(Problem with dt_forcesoil ?)') 
    1411              ENDIF 
     1401             iatt=FLOOR(sf_time/dt_forcesoil) 
     1402             IF (iatt == 0) iatt = iatt_old + 1 
    14121403 
    14131404             IF ((iatt<iatt_old) .and. (.not. cumul_Cforcing)) THEN 
    14141405                nforce(:)=0 
    1415                 soilcarbon_input(:,:,:,:) = 0 
    1416                 control_moist(:,:,:) = 0 
    1417                 control_temp(:,:,:) = 0 
    1418                 npp_equil(:,:) = 0 
     1406                soilcarbon_input(:,:,:,:) = zero 
     1407                control_moist(:,:,:) = zero 
     1408                control_temp(:,:,:) = zero 
     1409                npp_equil(:,:) = zero 
    14191410             ENDIF 
    14201411             iatt_old=iatt 
     
    14431434 
    14441435          gpp_daily_x(:,:) = zero 
    1445           resp_maint_part_x(:,:,:) = zero 
    14461436          !gpp needs to be multiplied by coverage for forcing (see above) 
    14471437          DO j = 2, nvm              
    14481438             gpp_daily_x(:,j) = gpp_daily_x(:,j) + & 
    14491439                  &                              gpp_daily(:,j) * dt_slow / one_day * veget_cov_max(:,j) 
    1450              resp_maint_part_x(:,j,:) = resp_maint_part_x(:,j,:) + & 
    1451                   &                              resp_maint_part(:,j,:) * dt_slow / one_day 
    14521440          ENDDO 
    14531441          ! 
     
    14851473             gpp_daily_fm(:,:,iisf) = & 
    14861474                  &                (xn*gpp_daily_fm(:,:,iisf) + gpp_daily_x(:,:))/(xn+1.) 
    1487              resp_maint_part_fm(:,:,:,iisf) = & 
    1488                   &                ( xn*resp_maint_part_fm(:,:,:,iisf) & 
    1489                   &         +resp_maint_part_x(:,:,:) )/(xn+1.) 
    14901475             veget_fm(:,:,iisf) = & 
    14911476                  &                (xn*veget_fm(:,:,iisf) + veget(:,:) )/(xn+1.) 
     
    14971482             clay_fm(:,iisf) = clay(:) 
    14981483             humrel_daily_fm(:,:,iisf) = humrel_daily(:,:) 
    1499              litterhum_daily_fm(:,iisf) = +litterhum_daily(:) 
     1484             litterhum_daily_fm(:,iisf) = litterhum_daily(:) 
    15001485             t2m_daily_fm(:,iisf) = t2m_daily(:) 
    15011486             t2m_min_daily_fm(:,iisf) =t2m_min_daily(:) 
     
    15051490             precip_fm(:,iisf) = precip_daily(:) 
    15061491             gpp_daily_fm(:,:,iisf) =gpp_daily_x(:,:) 
    1507              resp_maint_part_fm(:,:,:,iisf) = resp_maint_part_x(:,:,:) 
    15081492             veget_fm(:,:,iisf) = veget(:,:) 
    15091493             veget_max_fm(:,:,iisf) =veget_max(:,:) 
     
    21812165    IF (ALLOCATED(precip_fm)) DEALLOCATE(precip_fm) 
    21822166    IF (ALLOCATED(gpp_daily_fm))  DEALLOCATE(gpp_daily_fm) 
    2183     IF (ALLOCATED(resp_maint_part_fm))  DEALLOCATE(resp_maint_part_fm) 
    21842167    IF (ALLOCATED(veget_fm)) DEALLOCATE(veget_fm) 
    21852168    IF (ALLOCATED(veget_max_fm)) DEALLOCATE(veget_max_fm) 
     
    21972180       IF (ALLOCATED(precip_fm_g)) DEALLOCATE(precip_fm_g) 
    21982181       IF (ALLOCATED(gpp_daily_fm_g))  DEALLOCATE(gpp_daily_fm_g) 
    2199        IF (ALLOCATED(resp_maint_part_fm_g))  DEALLOCATE(resp_maint_part_fm_g) 
    22002182       IF (ALLOCATED(veget_fm_g)) DEALLOCATE(veget_fm_g) 
    22012183       IF (ALLOCATED(veget_max_fm_g)) DEALLOCATE(veget_max_fm_g) 
     
    24392421    ALLOCATE(gpp_daily_fm(kjpindex,nvm,nsfm),stat=ier) 
    24402422    l_error = l_error .OR. (ier /= 0) 
    2441     ALLOCATE(resp_maint_part_fm(kjpindex,nvm,nparts,nsfm),stat=ier) 
    2442     l_error = l_error .OR. (ier /= 0) 
    24432423    ALLOCATE(veget_fm(kjpindex,nvm,nsfm),stat=ier) 
    24442424    l_error = l_error .OR. (ier /= 0) 
     
    24532433    ALLOCATE(nf_cumul(nsft),stat=ier) 
    24542434    l_error = l_error .OR. (ier /= 0) 
     2435    IF (l_error) THEN 
     2436       WRITE(numout,*) 'Problem with memory allocation: forcing variables' 
     2437       STOP 'init_forcing' 
     2438    ENDIF 
    24552439 
    24562440    IF (is_root_prc) THEN 
     
    24752459       ALLOCATE(gpp_daily_fm_g(nbp_glo,nvm,nsfm),stat=ier) 
    24762460       l_error = l_error .OR. (ier /= 0) 
    2477        ALLOCATE(resp_maint_part_fm_g(nbp_glo,nvm,nparts,nsfm),stat=ier) 
    2478        l_error = l_error .OR. (ier /= 0) 
    24792461       ALLOCATE(veget_fm_g(nbp_glo,nvm,nsfm),stat=ier) 
    24802462       l_error = l_error .OR. (ier /= 0) 
     
    24832465       ALLOCATE(lai_fm_g(nbp_glo,nvm,nsfm),stat=ier) 
    24842466       l_error = l_error .OR. (ier /= 0) 
     2467       IF (l_error) THEN 
     2468          WRITE(numout,*) 'Problem with memory allocation: forcing variables' 
     2469          STOP 'init_forcing' 
     2470       ENDIF 
    24852471    ELSE 
    24862472       ALLOCATE(clay_fm_g(0,nsfm),stat=ier) 
     
    24942480       ALLOCATE(precip_fm_g(0,nsfm),stat=ier) 
    24952481       ALLOCATE(gpp_daily_fm_g(0,nvm,nsfm),stat=ier) 
    2496        ALLOCATE(resp_maint_part_fm_g(0,nvm,nparts,nsfm),stat=ier) 
    24972482       ALLOCATE(veget_fm_g(0,nvm,nsfm),stat=ier) 
    24982483       ALLOCATE(veget_max_fm_g(0,nvm,nsfm),stat=ier) 
     
    25232508    precip_fm(:,:) = zero 
    25242509    gpp_daily_fm(:,:,:) = zero 
    2525     resp_maint_part_fm(:,:,:,:)=zero 
    25262510    veget_fm(:,:,:) = zero 
    25272511    veget_max_fm(:,:,:) = zero 
     
    25752559    CALL gather(precip_fm,precip_fm_g) 
    25762560    CALL gather(gpp_daily_fm,gpp_daily_fm_g) 
    2577     CALL gather(resp_maint_part_fm,resp_maint_part_fm_g) 
    25782561    CALL gather(veget_fm,veget_fm_g) 
    25792562    CALL gather(veget_max_fm,veget_max_fm_g) 
     
    26622645                  &            gpp_daily_fm_g(:,:,ifirst(iblocks):ilast(iblocks)), & 
    26632646                  &            start=start(1:ndim), count=count_force(1:ndim)) 
    2664              ndim = 4; 
    2665              start(1:ndim) = 1; start(ndim) = isf(ifirst(iblocks)); 
    2666              count_force(1:ndim)=SHAPE(resp_maint_part_fm_g) 
    2667              count_force(ndim) = isf(ilast(iblocks))-isf(ifirst(iblocks))+1 
    2668              ier = NF90_INQ_VARID (forcing_id,'resp_maint_part',vid) 
    2669              ier = NF90_PUT_VAR (forcing_id,vid, & 
    2670                   &            resp_maint_part_fm_g(:,:,:,ifirst(iblocks):ilast(iblocks)), & 
    2671                   &            start=start(1:ndim), count=count_force(1:ndim)) 
    26722647             ndim = 3; 
    26732648             start(1:ndim) = 1; start(ndim) = isf(ifirst(iblocks)); 
     
    27102685    INTEGER(i_std)                :: iisf, iblocks, nblocks 
    27112686    INTEGER(i_std)                :: ier 
     2687    LOGICAL    :: a_er 
    27122688    INTEGER(i_std),DIMENSION(0:2) :: ifirst, ilast 
    27132689    INTEGER(i_std),PARAMETER      :: ndm = 10 
    27142690    INTEGER(i_std),DIMENSION(ndm) :: start, count_force 
    27152691    INTEGER(i_std)                :: ndim, vid 
     2692 
     2693    LOGICAL, PARAMETER :: check=.FALSE. 
     2694 
     2695    IF (check) WRITE(numout,*) "forcing_read " 
    27162696    !--------------------------------------------------------------------- 
    27172697    ! 
     
    27312711          precip_fm(:,iisf) = zero 
    27322712          gpp_daily_fm(:,:,iisf) = zero 
    2733           resp_maint_part_fm(:,:,:,iisf) = zero 
    27342713          veget_fm(:,:,iisf) = zero 
    27352714          veget_max_fm(:,:,iisf) = zero 
     
    27602739       ENDIF 
    27612740    ENDDO 
     2741    IF (check) WRITE(numout,*) "forcing_read nblocks, ifirst, ilast",nblocks, ifirst, ilast 
    27622742    ! 
    27632743    IF (is_root_prc) THEN 
    27642744       DO iblocks = 1, nblocks 
     2745          IF (check) WRITE(numout,*) "forcing_read iblocks, ifirst(iblocks), ilast(iblocks)",iblocks, & 
     2746               ifirst(iblocks), ilast(iblocks) 
    27652747          IF (ifirst(iblocks) /= ilast(iblocks)) THEN 
     2748             a_er=.FALSE. 
    27662749             ndim = 2; 
    27672750             start(1:ndim) = 1; start(ndim) = isf(ifirst(iblocks)); 
     
    27692752             count_force(ndim) = isf(ilast(iblocks))-isf(ifirst(iblocks))+1 
    27702753             ier = NF90_INQ_VARID (forcing_id,'clay',vid) 
     2754             a_er = a_er.OR.(ier.NE.0) 
    27712755             ier = NF90_GET_VAR (forcing_id, vid, & 
    27722756                  &            clay_fm_g(:,ifirst(iblocks):ilast(iblocks)), & 
    27732757                  &            start=start(1:ndim), count=count_force(1:ndim)) 
     2758             a_er = a_er.OR.(ier.NE.0) 
     2759!--------- 
    27742760             ndim = 3; 
    27752761             start(1:ndim) = 1; start(ndim) = isf(ifirst(iblocks)); 
     
    27772763             count_force(ndim) = isf(ilast(iblocks))-isf(ifirst(iblocks))+1 
    27782764             ier = NF90_INQ_VARID (forcing_id,'humrel',vid) 
     2765             a_er = a_er.OR.(ier.NE.0) 
    27792766             ier = NF90_GET_VAR (forcing_id, vid, & 
    27802767                  &            humrel_daily_fm_g(:,:,ifirst(iblocks):ilast(iblocks)), & 
    27812768                  &            start=start(1:ndim), count=count_force(1:ndim)) 
     2769             a_er = a_er.OR.(ier.NE.0) 
     2770!--------- 
    27822771             ndim = 2; 
    27832772             start(1:ndim) = 1; start(ndim) = isf(ifirst(iblocks)); 
     
    27852774             count_force(ndim) = isf(ilast(iblocks))-isf(ifirst(iblocks))+1 
    27862775             ier = NF90_INQ_VARID (forcing_id,'litterhum',vid) 
     2776             a_er = a_er.OR.(ier.NE.0) 
    27872777             ier = NF90_GET_VAR (forcing_id, vid, & 
    27882778                  &              litterhum_daily_fm_g(:,ifirst(iblocks):ilast(iblocks)), & 
    27892779                  &            start=start(1:ndim), count=count_force(1:ndim)) 
     2780             a_er = a_er.OR.(ier.NE.0) 
     2781!--------- 
    27902782             ndim = 2; 
    27912783             start(1:ndim) = 1; start(ndim) = isf(ifirst(iblocks)); 
     
    27932785             count_force(ndim) = isf(ilast(iblocks))-isf(ifirst(iblocks))+1 
    27942786             ier = NF90_INQ_VARID (forcing_id,'t2m',vid) 
     2787             a_er = a_er.OR.(ier.NE.0) 
    27952788             ier = NF90_GET_VAR (forcing_id, vid, & 
    27962789                  &              t2m_daily_fm_g(:,ifirst(iblocks):ilast(iblocks)), & 
    27972790                  &            start=start(1:ndim), count=count_force(1:ndim)) 
     2791             a_er = a_er.OR.(ier.NE.0) 
     2792!--------- 
    27982793             ndim = 2; 
    27992794             start(1:ndim) = 1; start(ndim) = isf(ifirst(iblocks)); 
     
    28012796             count_force(ndim) = isf(ilast(iblocks))-isf(ifirst(iblocks))+1 
    28022797             ier = NF90_INQ_VARID (forcing_id,'t2m_min',vid) 
     2798             a_er = a_er.OR.(ier.NE.0) 
    28032799             ier = NF90_GET_VAR (forcing_id, vid, & 
    28042800                  &              t2m_min_daily_fm_g(:,ifirst(iblocks):ilast(iblocks)), & 
    28052801                  &            start=start(1:ndim), count=count_force(1:ndim)) 
     2802             a_er = a_er.OR.(ier.NE.0) 
     2803!--------- 
    28062804             ndim = 2; 
    28072805             start(1:ndim) = 1; start(ndim) = isf(ifirst(iblocks)); 
     
    28092807             count_force(ndim) = isf(ilast(iblocks))-isf(ifirst(iblocks))+1 
    28102808             ier = NF90_INQ_VARID (forcing_id,'tsurf',vid) 
     2809             a_er = a_er.OR.(ier.NE.0) 
    28112810             ier = NF90_GET_VAR (forcing_id, vid, & 
    28122811                  &              tsurf_daily_fm_g(:,ifirst(iblocks):ilast(iblocks)), & 
    28132812                  &            start=start(1:ndim), count=count_force(1:ndim)) 
     2813             a_er = a_er.OR.(ier.NE.0) 
     2814!--------- 
    28142815             ndim = 3; 
    28152816             start(1:ndim) = 1; start(ndim) = isf(ifirst(iblocks)); 
     
    28172818             count_force(ndim) = isf(ilast(iblocks))-isf(ifirst(iblocks))+1 
    28182819             ier = NF90_INQ_VARID (forcing_id,'tsoil',vid) 
     2820             a_er = a_er.OR.(ier.NE.0) 
    28192821             ier = NF90_GET_VAR (forcing_id, vid, & 
    28202822                  &              tsoil_daily_fm_g(:,:,ifirst(iblocks):ilast(iblocks)), & 
    28212823                  &            start=start(1:ndim), count=count_force(1:ndim)) 
     2824             a_er = a_er.OR.(ier.NE.0) 
     2825!--------- 
    28222826             ndim = 3; 
    28232827             start(1:ndim) = 1; start(ndim) = isf(ifirst(iblocks)); 
     
    28252829             count_force(ndim) = isf(ilast(iblocks))-isf(ifirst(iblocks))+1 
    28262830             ier = NF90_INQ_VARID (forcing_id,'soilhum',vid) 
     2831             a_er = a_er.OR.(ier.NE.0) 
    28272832             ier = NF90_GET_VAR (forcing_id, vid, & 
    28282833                  &              soilhum_daily_fm_g(:,:,ifirst(iblocks):ilast(iblocks)), & 
    28292834                  &            start=start(1:ndim), count=count_force(1:ndim)) 
     2835             a_er = a_er.OR.(ier.NE.0) 
     2836!--------- 
    28302837             ndim = 2; 
    28312838             start(1:ndim) = 1; start(ndim) = isf(ifirst(iblocks)); 
     
    28332840             count_force(ndim) = isf(ilast(iblocks))-isf(ifirst(iblocks))+1 
    28342841             ier = NF90_INQ_VARID (forcing_id,'precip',vid) 
     2842             a_er = a_er.OR.(ier.NE.0) 
    28352843             ier = NF90_GET_VAR (forcing_id, vid, & 
    28362844                  &              precip_fm_g(:,ifirst(iblocks):ilast(iblocks)), & 
    28372845                  &            start=start(1:ndim), count=count_force(1:ndim)) 
     2846             a_er = a_er.OR.(ier.NE.0) 
     2847!--------- 
    28382848             ndim = 3; 
    28392849             start(1:ndim) = 1; start(ndim) = isf(ifirst(iblocks)); 
     
    28412851             count_force(ndim) = isf(ilast(iblocks))-isf(ifirst(iblocks))+1 
    28422852             ier = NF90_INQ_VARID (forcing_id,'gpp',vid) 
     2853             a_er = a_er.OR.(ier.NE.0) 
    28432854             ier = NF90_GET_VAR (forcing_id, vid, & 
    28442855                  &            gpp_daily_fm_g(:,:,ifirst(iblocks):ilast(iblocks)), & 
    28452856                  &            start=start(1:ndim), count=count_force(1:ndim)) 
    2846              ndim = 4; 
    2847              start(1:ndim) = 1; start(ndim) = isf(ifirst(iblocks)); 
    2848              count_force(1:ndim)=SHAPE(resp_maint_part_fm_g) 
    2849              count_force(ndim) = isf(ilast(iblocks))-isf(ifirst(iblocks))+1 
    2850              ier = NF90_INQ_VARID (forcing_id,'resp_maint_part',vid) 
    2851              ier = NF90_GET_VAR (forcing_id,vid, & 
    2852                   &       resp_maint_part_fm_g(:,:,:,ifirst(iblocks):ilast(iblocks)), & 
    2853                   &            start=start(1:ndim), count=count_force(1:ndim)) 
     2857             a_er = a_er.OR.(ier.NE.0) 
     2858!--------- 
    28542859             ndim = 3; 
    28552860             start(1:ndim) = 1; start(ndim) = isf(ifirst(iblocks)); 
     
    28572862             count_force(ndim) = isf(ilast(iblocks))-isf(ifirst(iblocks))+1 
    28582863             ier = NF90_INQ_VARID (forcing_id,'veget',vid) 
     2864             a_er = a_er.OR.(ier.NE.0) 
    28592865             ier = NF90_GET_VAR (forcing_id, vid, & 
    28602866                  &            veget_fm_g(:,:,ifirst(iblocks):ilast(iblocks)), & 
    28612867                  &            start=start(1:ndim), count=count_force(1:ndim)) 
     2868             a_er = a_er.OR.(ier.NE.0) 
     2869!--------- 
    28622870             ndim = 3; 
    28632871             start(1:ndim) = 1; start(ndim) = isf(ifirst(iblocks)); 
     
    28652873             count_force(ndim) = isf(ilast(iblocks))-isf(ifirst(iblocks))+1 
    28662874             ier = NF90_INQ_VARID (forcing_id,'veget_max',vid) 
     2875             a_er = a_er.OR.(ier.NE.0) 
    28672876             ier = NF90_GET_VAR (forcing_id, vid, & 
    28682877                  &            veget_max_fm_g(:,:,ifirst(iblocks):ilast(iblocks)), & 
    28692878                  &            start=start(1:ndim), count=count_force(1:ndim)) 
     2879             a_er = a_er.OR.(ier.NE.0) 
     2880!--------- 
    28702881             ndim = 3; 
    28712882             start(1:ndim) = 1; start(ndim) = isf(ifirst(iblocks)); 
     
    28732884             count_force(ndim) = isf(ilast(iblocks))-isf(ifirst(iblocks))+1 
    28742885             ier = NF90_INQ_VARID (forcing_id,'lai',vid) 
     2886             a_er = a_er.OR.(ier.NE.0) 
    28752887             ier = NF90_GET_VAR (forcing_id, vid, & 
    28762888                  &            lai_fm_g(:,:,ifirst(iblocks):ilast(iblocks)), & 
    28772889                  &            start=start(1:ndim), count=count_force(1:ndim)) 
     2890             a_er = a_er.OR.(ier.NE.0) 
     2891             IF (a_er) THEN 
     2892                CALL ipslerr (3,'forcing_read', & 
     2893                     &        'PROBLEM when read forcing file', & 
     2894                     &        '','') 
     2895             ENDIF 
    28782896          ENDIF 
    28792897       ENDDO 
     
    28892907    CALL scatter(precip_fm_g,precip_fm) 
    28902908    CALL scatter(gpp_daily_fm_g,gpp_daily_fm) 
    2891     CALL scatter(resp_maint_part_fm_g,resp_maint_part_fm) 
    28922909    CALL scatter(veget_fm_g,veget_fm) 
    28932910    CALL scatter(veget_max_fm_g,veget_max_fm) 
    2894     CALL scatter(lai_fm_g,lai_fm_g) 
     2911    CALL scatter(lai_fm_g,lai_fm) 
    28952912    !-------------------------- 
    28962913  END SUBROUTINE forcing_read 
Note: See TracChangeset for help on using the changeset viewer.