Changeset 8273
- Timestamp:
- 2023-11-02T16:48:24+01:00 (14 months ago)
- Location:
- branches/ORCHIDEE_2_2/ORCHIDEE
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/ORCHIDEE_2_2/ORCHIDEE
- Property svn:mergeinfo changed
/trunk/ORCHIDEE merged: 8233
- Property svn:mergeinfo changed
-
branches/ORCHIDEE_2_2/ORCHIDEE/src_parameters/constantes.f90
r7820 r8273 652 652 653 653 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 654 663 ! 655 664 !Config Key = C1 -
branches/ORCHIDEE_2_2/ORCHIDEE/src_parameters/constantes_var.f90
r7709 r8273 557 557 !! (true/false) 558 558 !$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) 559 561 560 562 LOGICAL, SAVE :: new_watstress = .FALSE. -
branches/ORCHIDEE_2_2/ORCHIDEE/src_sechiba/condveg.f90
r7515 r8273 1627 1627 !! 0.4 Local variables 1628 1628 1629 INTEGER(i_std) :: ji !! Loop index over grid points 1629 1630 INTEGER(i_std) :: jv !! Loop index over PFTs (unitless) 1630 1631 REAL(r_std), DIMENSION(kjpindex) :: sumveg !! Fraction of bare soil (unitless) … … 1669 1670 kBs_m1(:) = 2.46 * reynolds**(1./4.) - LOG(7.4) 1670 1671 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 1673 1680 ! Fraction of bare soil 1674 1681 sumveg(:) = veget_max(:,1) … … 1682 1689 ! vegetative PFTs over the grid cell 1683 1690 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 1686 1695 ! Calculate the average roughness over the grid cell: 1687 1696 ! The unitless drag coefficient is per vegetative PFT … … 1694 1703 ! The sum over all PFTs gives the average roughness 1695 1704 ! 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 1697 1725 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 1727 1742 ! Sum of bare soil and fraction vegetated fraction 1728 sumveg( :) = sumveg(:) + veget_max(:,jv)1743 sumveg(ji) = sumveg(ji) + veget_max(ji,jv) 1729 1744 1730 1745 ! Weigh height of vegetation with maximal cover fraction 1731 ave_height( :) = ave_height(:) + veget_max(:,jv)*height(:,jv)1732 1733 ENDWHERE1734 END DO1746 ave_height(ji) =ave_height(ji) + veget_max(ji,jv)*height(ji,jv) 1747 END IF 1748 END DO 1749 END DO 1735 1750 1736 1751 !! 3. Calculate the mean roughness height of vegetative PFTs over the grid cell … … 1767 1782 1768 1783 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 1772 1793 ENDDO ! Loop over # of non-vegative surfaces 1773 1794
Note: See TracChangeset
for help on using the changeset viewer.