关于陆面模式NoahMP的学习

因为要进行一些关于陆面过程的研究,所以希望可以系统地学习一下陆面模式。通过啃NoahMP的手册进行学习。

简介

首先介绍Noah-MP的基本情况:

NOAH代表:NCEP/EMC、OSU、AFWA、HL

Noah land surface model with Multiple-Physics

镶嵌在主模式(如WRF)下,主模式提供Noah-MP需要的输入数据,驱动每个格点上的Noah-MP一维柱模式。每个格点上又区分为植物和纯土壤的部分进行分别的计算。

目前NoahMP只在自然作物和农作物中考虑生物化学过程(目前只有碳循环)。

变量

主要是能量、水和生物质过程,包括三类变量:通量、状态变量、参数。

$\theta_{sfc},[K]$ : Surface potential temperature 表面位温

过程

大气模式为陆面模式提供大气强迫场,包括地面气温、地面气压、降水、风场、比湿和向下的长波和短波辐射。

而陆面模式则至少为大气提供潜热通量、感热通量和向上的长波和短波辐射。

在陆气模式的边界上,这些交换量由大气和陆面模式互相提供的情况,称之为陆气耦合。

如果在边界上,这些外界强迫场是通过再分析、观测等给出,结合经验公式计算得到的话,这就是非耦合的情况。

很明显,WRF中如果使用了陆面模式的话,就是陆气耦合的了。

代码

module_sf_noahmpdrv.Fmodule_sf_noahmplsm.F 是 WRF (Weather Research and Forecasting) 模型中与 Noah-MP 土壤模型相关的两个不同模块。它们的主要区别在于它们的功能和用途:

  1. module_sf_noahmpdrv.F

  2. module_sf_noahmplsm.F

总结来说,module_sf_noahmpdrv.F 是驱动模块,负责管理和调用 Noah-MP 模型的各个部分,而 module_sf_noahmplsm.F 则是实现具体物理过程的模块,负责执行土壤和植被的物理计算。

module_sf_noahmpdrv.F

  1. noahmplsm SUBROUTINE:

    • 这是 Noah-MP 模型的主要子程序,它驱动地表通量和土壤、植被状态的计算。它使用输入的气象数据、土壤和植被参数来计算感热通量、潜热通量、土壤湿度、温度等。
  2. TRANSFER_MP_PARAMETERS SUBROUTINE:

    • 这个子程序用于传输和设置 Noah-MP 模型所需的参数,包括植被、土壤和城市参数。
  3. GROUNDWATER_INIT SUBROUTINE:

    • 该子程序初始化与地下水动力学相关的变量。它考虑了地下水流动和河流与地下水之间的交换。
  4. GECR_OS_INITGECR_OS_REINIT SUBROUTINES:

    • 这些子程序用于初始化和重置 GECROS 作物模型的变量。GECROS 是一个作物生长模型,用于模拟作物生长和产量。
  5. SNOW_INIT SUBROUTINE:

    • 用于初始化与降雪相关的变量,如积雪深度、温度和液态水含量。
  6. NOAHMP_URBAN SUBROUTINE:

    • 处理城市地区的特殊过程,如城市冠层模型和城市地下水模型。
  7. EQSMOISTURE SUBROUTINE:

    • 计算土壤水分的平衡状态。它使用土壤物理参数和地下水位来估算土壤水分。

      1. SUBROUTINE EQSMOISTURE(NSOIL, ZSOIL, SMCMAX, SMCWLT, DWSAT, DKSAT, BEXP, SMCEQ):定义了一个子程序,接受多个参数,其中 NSOIL 是土壤层数,ZSOIL 是各层土壤的深度,SMCMAX 是最大土壤含水量,SMCWLT 是萎凋点土壤含水量,DWSAT 是饱和土壤的干密度,DKSAT 是饱和导水率,BEXP 是与土壤水分特征曲线有关的指数,SMCEQ 是计算出的平衡含水量。

      2. IMPLICIT NONE:声明所有变量在使用前必须显式定义。

      3. INTEGER, INTENT(IN) :: NSOIL:定义一个输入参数 NSOIL,表示土壤层数。

      4. REAL, DIMENSION(1:NSOIL), INTENT(IN) :: ZSOIL:定义一个输入数组 ZSOIL,表示每层土壤的深度。

      5. REAL, INTENT(IN) :: SMCMAX, SMCWLT, BEXP, DWSAT, DKSAT:定义几个输入参数,分别表示最大土壤含水量、萎凋点土壤含水量、土壤水分特征曲线指数、饱和土壤的干密度和饱和导水率。

      6. REAL, DIMENSION(1:NSOIL), INTENT(OUT) :: SMCEQ:定义一个输出数组 SMCEQ,用于存储每层土壤的平衡含水量。

      7. INTEGER :: K, ITER:定义两个局部变量 KITER,分别用于循环索引和迭代计数。

      8. REAL :: DDZ, SMC, FUNC, DFUNC, AA, BB, EXPON, DX:定义了几个局部变量,用于计算过程中的中间值。

      9. DO K=1,NSOIL:开始一个循环,遍历所有土壤层。

      10. IF 语句:根据土壤层的位置计算土壤层厚度的一半 DDZ

      11. EXPON = BEXP + 1.:计算指数。

      12. AA = DWSAT/DDZBB = DKSAT / SMCMAX ** EXPON:计算两个系数 AABB

      13. SMC = 0.5 * SMCMAX:初始化土壤含水量 SMC 为最大土壤含水量的一半。

      14. DO ITER = 1, 100:开始一个迭代循环,使用牛顿-拉弗森方法求解平衡含水量。

      15. FUNCDFUNC:计算函数值和导数。

      16. DX = FUNC/DFUNC:计算牛顿-拉弗森方法中的增量。

      17. SMC = SMC - DX:更新土壤含水量。

      18. IF (ABS(DX) < 1.E-6) EXIT:如果增量足够小,则退出循环。

      19. SMCEQ(K) = MIN(MAX(SMC,1.E-4),SMCMAX*0.99):计算平衡含水量,并确保它在合理范围内。

      20. ENDDO:结束循环。

      21. END SUBROUTINE EQSMOISTURE:结束子程序。

      这个子程序的目的是计算在给定土壤深度、最大含水量、萎凋点含水量、土壤水分特征曲线指数等参数的情况下,每层土壤的平衡含水量。它使用了牛顿-拉弗森方法来迭代求解,确保计算结果的准确性。

  8. checkIfHarvest FUNCTION:

    • 确定是否达到收获条件。如果是,返回值为 1,表示可以收获;否则返回 0。
  9. noahmp_urban SUBROUTINE:

    • 处理 Noah-MP 模型中的城市物理方案,包括城市冠层模型(UCM)和城市建筑效应参数化(BEP)。
  10. PECOTRANSFER_SR2006 SUBROUTINE:

    • 执行基于输入的沙子、粘土和有机质含量的土壤水分特征曲线的 pedotransfer 函数。
  11. noahmplsm SUBROUTINE:

    • 输入: 模型配置、初始条件、气象强迫数据、土壤和植被特性等。
    • 输出: 地表通量、土壤和植被状态变量的更新。
  12. TRANSFER_MP_PARAMETERS SUBROUTINE:

    • 输入: 土壤类型、植被类型、作物类型等。
    • 输出: Noah-MP 模型参数的设置。
  13. GROUNDWATER_INIT SUBROUTINE:

    • 输入: 土壤层厚度、土壤类型、初始地下水位等。
    • 输出: 地下水相关变量的初始化。
  14. GECR_OS_INIT SUBROUTINE:

    • 输入: 地理和作物生长参数。
    • 输出: GECROS 作物模型初始化状态。
  15. GECR_OS_REINIT SUBROUTINE:

    • 输入: GECROS 作物模型当前状态。
    • 输出: GECROS 作物模型重置状态。
  16. SNOW_INIT SUBROUTINE:

    • 输入: 积雪深度、温度等。
    • 输出: 积雪相关的变量初始化。
  17. EQSMOISTURE SUBROUTINE:

    • 输入: 土壤物理特性参数。
    • 输出: 平衡状态下的土壤含水量。
  18. checkIfHarvest FUNCTION:

    • 输入: GECROS 作物模型状态、时间步长等。
    • 输出: 是否达到收获条件的判断。
  19. noahmp_urban SUBROUTINE:

    • 输入: 城市物理参数、建筑物特性、初始条件等。
    • 输出: 城市地区的能量和水分通量。
  20. PECOTRANSFER_SR2006 SUBROUTINE:

    • 输入: 土壤沙子、粘土和有机质含量。
    • 输出: 土壤水分特征曲线参数。

这些子程序共同构成了 Noah-MP 模型的核心部分,负责处理从地表能量和水分平衡到作物生长和城市物理过程的模拟。每个子程序都通过输入参数接收必要的数据,并输出计算结果,以供其他子程序或主程序使用。

module_sf_noahmplsm.F

SUBROUTINE NOAHMP_SFLX

这个子程序名为 NOAHMP_SFLX,是Fortran模块的一部分,它是Noah陆面过程模型(MP LSM)的一部分。该子程序旨在计算能量和水的表面通量,并与大气模型接口,提供必要的表面反馈。以下是其结构和关键组件的详细分解:

目的

子程序 NOAHMP_SFLX 用于计算各种表面通量,包括能量平衡组分(感热和潜热通量、辐射等)、水平衡组分(降水、蒸发、径流等)以及碳平衡组分(光合作用、呼吸作用等)。它适用于气候模型或天气研究预测(WRF)模型。

关键输入和输出

  • 输入 包括气象变量(如温度、湿度、风速)、地表特征(植被类型、土壤属性)和初始条件(积雪深度、土壤湿度)。
  • 输出 包括更新的表面状态(新的土壤湿度、温度剖面等)、通量(感热和潜热、蒸发、径流)以及碳循环变量。

详细分解

  1. 输入

    • 气象强迫:温度、湿度、风速、入射太阳辐射、降水。
    • 地表特征:植被类型、土壤属性、初始土壤湿度和温度。
    • 初始条件:积雪深度、土壤湿度等。
  2. 输出

    • 通量:感热通量、潜热通量、地热通量、蒸发、蒸腾。
    • 更新的状态:更新的土壤湿度、土壤温度、积雪深度、植被含水量。
    • 碳平衡:光合作用、呼吸作用。
  3. 调用的子程序

    • ATM:处理大气强迫。
    • PHENOLOGY:处理植被物候。
    • PRECIP_HEAT:管理由于降水引起的热和水平衡。
    • ENERGY:计算地表的能量平衡。
    • WATER:管理水平衡。
    • CARBON:如果动态植被活跃,计算碳通量。
    • ERROR:执行水和能量平衡的误差检查。
  4. 局部变量

    • 使用各种局部变量进行子程序内的中间计算。
  5. 流程描述

    • 大气强迫处理:将原始气象输入转换为适合地表计算的形式。
    • 植被物候:根据环境条件计算植被状态的变化。
    • 降水和热通量:确定入降水如何影响地表热和水平衡。
    • 能量平衡:计算地表与大气之间的各种热通量。
    • 水平衡:管理所有水通量,包括蒸发、蒸腾、径流和土壤湿度变化。
    • 碳平衡:如果动态植被活跃,计算光合作用和呼吸作用。
    • 误差检查:确保水和能量平衡是守恒的。

特别功能

  • 动态植被:可以切换不同的植被动态模型。
  • 灌溉:包括灌溉农业的模型。
  • 瓦片排水:包括在农业设置中模拟瓦片排水的选项。

使用方法

此子程序通常在较大的建模框架内调用,它为大气提供地表反馈。它设计得非常灵活,可以适应各种应用,包括气候研究、天气预报和水文建模。

此子程序是数值模型中陆-气相互作用的关键组成部分,提供了地表如何处理能量、水和碳的详细表示。

SUBROUTINE ENERGY

这是名为 ENERGY 的子程序,属于Noah多参数化陆面模型(Noah MP LSM),主要负责模拟地表能量平衡和水热交换。这个子程序涵盖了从地表吸收和反射太阳辐射、计算地表和植被覆盖层之间的感热和潜热通量,到模拟土壤和雪层温度等多个方面。

目的

ENERGY 子程序用于计算地表能量平衡,包括辐射、感热、潜热通量,以及土壤和雪层的温度变化。

输入

  • 基础信息:位置索引(ILOC, JLOC)、植被类型(VEGTYP)、地表类型(IST)、当前时间步(DT)、风速(UU, VV)、空气密度(RHOAIR)、比湿(QAIR)、地表温度(SFCTMP)、势温(THAIR)、降水(RAIN, SNOW)、植被水含量(CANLIQ, CANICE)等。
  • 气象数据:包括向下长波辐射(LWDN)、太阳辐射(SOLAD, SOLAI)、地表压力(SFCPRS)、二氧化碳和氧气浓度(CO2AIR, O2AIR)等。
  • 土壤和雪层信息:土壤层数(NSOIL)、雪层数(NSNOW)、实际雪层数(ISNOW)、土壤和雪层的深度(ZSNSO, ZSOIL)、土壤湿度(SMC, SH2O)、雪冰和雪水含量(SNICE, SNLIQ)等。

输出

  • 能量通量:包括地表吸收的太阳辐射(FSA)、反射的太阳辐射(FSR)、感热通量(FSH)、潜热通量(FGEV)、土壤热通量(SSOIL)等。
  • 温度和状态变量:包括植被温度(TV)、地表温度(TG)、土壤和雪层温度(STC)、积雪深度(SNOWH)、积雪当量水深(SNEQV)等。
  • 其他:包括地表湿度(FWET)、植被覆盖分数(FVEG)、土壤水分蒸发因子(BTRAN)、地表阻力(RSURF)等。

计算过程

  1. 初始化:设置一些局部变量和输出变量的初始值。
  2. 地表反照率计算:根据地表覆盖情况(植被、雪等)计算地表反照率。
  3. 植被和地表感热、潜热通量计算:通过植被和裸土的通量计算子程序(VEGE_FLUXBARE_FLUX),分别计算植被覆盖部分和裸土部分的能量通量。
  4. 地表温度和能量平衡:计算地表温度、感热通量、潜热通量和土壤热通量。
  5. 土壤和雪层温度计算:通过TSNOSOI子程序,计算土壤和雪层的温度变化。
  6. 相变过程计算:通过PHASECHANGE子程序,计算积雪的融化和土壤的冻结/融化过程。

应用

这个子程序是陆面模型中的关键部分,它确保了模型能够模拟地表能量平衡和水热交换,这对于理解地表水文过程和能量平衡至关重要。

这个子程序的设计使其能够适应不同的气象条件和地表类型,为陆面模型提供了必要的灵活性和准确性。