Changeset 8273 for branches/ORCHIDEE_2_2


Ignore:
Timestamp:
2023-11-02T16:48:24+01:00 (13 months ago)
Author:
josefine.ghattas
Message:

Integrated changeset [8233] done in the trunk with option USE_RATIO_Z0M_Z0H, see ticket #949

Location:
branches/ORCHIDEE_2_2/ORCHIDEE
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • branches/ORCHIDEE_2_2/ORCHIDEE

  • branches/ORCHIDEE_2_2/ORCHIDEE/src_parameters/constantes.f90

    r7820 r8273  
    652652 
    653653    IF ( rough_dyn ) THEN 
     654        
     655       !Config Key   = USE_RATIO_Z0M_Z0H 
     656       !Config Desc  = To impose a constant ratio as in ROUGH_DYN=F 
     657       !Config Def   = FALSE 
     658       !Config If    = ROUGH_DYN 
     659       !Config Help  =  
     660       !Config Units = [-]  
     661       CALL getin_p('USE_RATIO_Z0M_Z0H', use_ratio_z0m_z0h) 
     662 
    654663       ! 
    655664       !Config Key   = C1 
  • branches/ORCHIDEE_2_2/ORCHIDEE/src_parameters/constantes_var.f90

    r7709 r8273  
    557557                                            !! (true/false) 
    558558!$OMP THREADPRIVATE(rough_dyn) 
     559  LOGICAL, SAVE :: use_ratio_z0m_z0h = .FALSE. !! To impose a constant ratio as done in ROUGH_DYN=F 
     560!$OMP THREADPRIVATE(use_ratio_z0m_z0h) 
    559561 
    560562  LOGICAL, SAVE :: new_watstress = .FALSE. 
  • branches/ORCHIDEE_2_2/ORCHIDEE/src_sechiba/condveg.f90

    r7515 r8273  
    16271627    !! 0.4 Local variables 
    16281628 
     1629    INTEGER(i_std)                                      :: ji            !! Loop index over grid points 
    16291630    INTEGER(i_std)                                      :: jv            !! Loop index over PFTs (unitless) 
    16301631    REAL(r_std), DIMENSION(kjpindex)                    :: sumveg        !! Fraction of bare soil (unitless) 
     
    16691670    kBs_m1(:) = 2.46 * reynolds**(1./4.) - LOG(7.4) 
    16701671 
    1671     dragh(:) = veget_max(:,1) * (ct_karman/LOG(ztmp(:)/z0_ground(:)))*(ct_karman/LOG(ztmp(:)/(z0_ground(:)/ exp(kBs_m1(:))) )) 
    1672  
     1672    IF (use_ratio_z0m_z0h) THEN 
     1673       ! Do not use exp(kBs_m1(:) but and use ratio_z0m_z0h instead 
     1674       ! Same as rough_dyn=F except veget_max(:,1) is used instead of tot_bare_soil 
     1675       dragh(:) = veget_max(:,1) * (ct_karman/LOG(ztmp(:)/z0_ground(:)))*(ct_karman/LOG(ztmp(:)/(z0_ground(:)/ratio_z0m_z0h(1)) )) 
     1676    ELSE 
     1677       dragh(:) = veget_max(:,1) * (ct_karman/LOG(ztmp(:)/z0_ground(:)))*(ct_karman/LOG(ztmp(:)/(z0_ground(:)/exp(kBs_m1(:))) )) 
     1678    END IF 
     1679     
    16731680    ! Fraction of bare soil 
    16741681    sumveg(:) = veget_max(:,1) 
     
    16821689    ! vegetative PFTs over the grid cell 
    16831690    DO jv = 2, nvm 
    1684         
    1685        WHERE(veget_max(:,jv) .GT. zero)        
     1691 
     1692     DO ji = 1, kjpindex 
     1693      IF (veget_max(ji,jv) .GT. zero) THEN 
     1694 
    16861695          ! Calculate the average roughness over the grid cell: 
    16871696          ! The unitless drag coefficient is per vegetative PFT 
     
    16941703          ! The sum over all PFTs gives the average roughness  
    16951704          ! per grid cell for the vegetative PFTs. 
    1696           eta(:) = c1 - c2 * exp(-c3 * Cdrag_foliage * lai(:,jv)) 
     1705 
     1706          eta(ji) = c1 - c2 * exp(-c3 * Cdrag_foliage * lai(ji,jv)) 
     1707 
     1708          z0m_pft(ji) = (height(ji,jv)*(1-height_displacement)*(exp(-ct_karman/eta(ji))-exp(-ct_karman/(c1-c2)))) & 
     1709               + z0_ground(ji) 
     1710 
     1711          dragm(ji) = dragm(ji) + veget_max(ji,jv) *(ct_karman/LOG(ztmp(ji)/z0m_pft(ji)))**2 
     1712    
     1713          fc(ji) = veget(ji,jv)/veget_max(ji,jv) 
     1714          fs(ji) = 1. - fc(ji) 
     1715 
     1716          eta_ec(ji) = ( Cdrag_foliage * lai(ji,jv)) / (2 * eta(ji)*eta(ji)) 
     1717          wind(ji) = SQRT(u(ji)*u(ji)+v(ji)*v(ji)) 
     1718          u_star(ji)= ct_karman * MAX(min_wind,wind(ji)) / LOG((zlev(ji)+(height(ji,jv)*(1-height_displacement)))/z0m_pft(ji)) 
     1719          Reynolds(ji) = z0_ground(ji) * u_star(ji) & 
     1720               / (1.327*1e-5 * (pb_std/pb(ji)) * (temp_air(ji)/ZeroCelsius)**(1.81)) 
     1721                  
     1722          kBs_m1(ji) = 2.46 * reynolds(ji)**(1./4.) - LOG(7.4) 
     1723          Ct_star(ji) = Prandtl**(-2./3.) * SQRT(1./Reynolds(ji)) 
     1724 
    16971725           
    1698           z0m_pft(:) = (height(:,jv)*(1-height_displacement)*(exp(-ct_karman/eta(:))-exp(-ct_karman/(c1-c2)))) & 
    1699                + z0_ground(:) 
    1700     
    1701           dragm(:) = dragm(:) + veget_max(:,jv) * (ct_karman/LOG(ztmp(:)/z0m_pft(:)))**2 
    1702     
    1703           fc(:) = veget(:,jv)/veget_max(:,jv) 
    1704           fs(:) = 1. - fc(:) 
    1705  
    1706           eta_ec(:) = ( Cdrag_foliage * lai(:,jv)) / (2 * eta(:)*eta(:)) 
    1707           wind(:) = SQRT(u(:)*u(:)+v(:)*v(:)) 
    1708           u_star(:)= ct_karman * MAX(min_wind,wind(:)) / LOG((zlev(:)+(height(:,jv)*(1-height_displacement)))/z0m_pft(:)) 
    1709           Reynolds(:) = z0_ground(:) * u_star(:) & 
    1710                / (1.327*1e-5 * (pb_std/pb(:)) * (temp_air(:)/ZeroCelsius)**(1.81)) 
    1711                   
    1712           kBs_m1(:) = 2.46 * reynolds**(1./4.) - LOG(7.4) 
    1713           Ct_star(:) = Prandtl**(-2./3.) * SQRT(1./Reynolds(:)) 
    1714     
    1715           WHERE(lai(:,jv) .GT. min_sechiba) 
    1716              kB_m1(:) = (ct_karman * Cdrag_foliage) / (4 * Ct * eta(:) * (1 - exp(-eta_ec(:)/2.))) * fc(:)**2. & 
    1717                   + 2*fc(:)*fs(:) * (ct_karman * eta(:) * z0m_pft(:) / height(:,jv)) / Ct_star(:) & 
    1718                   + kBs_m1(:) * fs(:)**2.  
    1719           ELSEWHERE 
    1720              kB_m1(:) = kBs_m1(:) * fs(:)**2.  
    1721           ENDWHERE 
    1722     
    1723           z0h_pft(:) = z0m_pft(:) / exp(kB_m1(:)) 
    1724     
    1725           dragh(:) = dragh(:) + veget_max(:,jv) * (ct_karman/LOG(ztmp(:)/z0m_pft(:)))*(ct_karman/LOG(ztmp(:)/z0h_pft(:))) 
    1726     
     1726          IF (lai(ji,jv) .GT. min_sechiba) THEN 
     1727             kB_m1(ji) = (ct_karman * Cdrag_foliage) / (4 * Ct * eta(ji) * (1 - exp(-eta_ec(ji)/2.))) * fc(ji)**2. & 
     1728                  + 2*fc(ji)*fs(ji) * (ct_karman * eta(ji) * z0m_pft(ji) / height(ji,jv)) / Ct_star(ji) & 
     1729                  + kBs_m1(ji) * fs(ji)**2.  
     1730          ELSE 
     1731             kB_m1(ji) = kBs_m1(ji) * fs(ji)**2.  
     1732          END IF 
     1733           
     1734          IF (use_ratio_z0m_z0h) THEN 
     1735             ! Do not use exp(kBs_m1(ji) but and use ratio_z0m_z0h instead 
     1736             z0h_pft(ji) = z0m_pft(ji) / ratio_z0m_z0h(jv) 
     1737          ELSE 
     1738             z0h_pft(ji) = z0m_pft(ji) / exp(kB_m1(ji)) 
     1739          END IF 
     1740          dragh(ji) = dragh(ji) + veget_max(ji,jv) * (ct_karman/LOG(ztmp(ji)/z0m_pft(ji)))*(ct_karman/LOG(ztmp(ji)/z0h_pft(ji))) 
     1741           
    17271742          ! Sum of bare soil and fraction vegetated fraction 
    1728           sumveg(:) = sumveg(:) + veget_max(:,jv) 
     1743          sumveg(ji) = sumveg(ji) + veget_max(ji,jv) 
    17291744 
    17301745          ! Weigh height of vegetation with maximal cover fraction 
    1731           ave_height(:) = ave_height(:) + veget_max(:,jv)*height(:,jv) 
    1732  
    1733        ENDWHERE 
    1734     ENDDO 
     1746          ave_height(ji) =ave_height(ji) + veget_max(ji,jv)*height(ji,jv) 
     1747       END IF 
     1748      END DO 
     1749    END DO 
    17351750     
    17361751    !! 3. Calculate the mean roughness height of vegetative PFTs over the grid cell 
     
    17671782        
    17681783       kBs_m1(:) = 2.46 * reynolds**(1./4.) - LOG(7.4) 
    1769     
    1770        dragh(:) = dragh(:) + frac_nobio(:,jv) *  (ct_karman/LOG(ztmp(:)/z0_nobio)) * & 
    1771             (ct_karman/LOG(ztmp(:)/(z0_nobio/ exp(kBs_m1(:))) )) 
     1784       IF (use_ratio_z0m_z0h) THEN 
     1785          ! Do not use exp(kBs_m1(:) but and use ratio_z0m_z0h instead 
     1786          dragh(:) = dragh(:) + frac_nobio(:,jv) * (ct_karman/LOG(ztmp(:)/z0_nobio)) * & 
     1787               (ct_karman/LOG(ztmp(:)/(z0_nobio/ ratio_z0m_z0h(1)) )) 
     1788       ELSE 
     1789          dragh(:) = dragh(:) + frac_nobio(:,jv) * (ct_karman/LOG(ztmp(:)/z0_nobio)) * & 
     1790               (ct_karman/LOG(ztmp(:)/(z0_nobio/ exp(kBs_m1(:))) )) 
     1791       END IF 
     1792        
    17721793    ENDDO ! Loop over # of non-vegative surfaces 
    17731794     
Note: See TracChangeset for help on using the changeset viewer.