关于陆面模式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.F
和 module_sf_noahmplsm.F
是 WRF (Weather Research and Forecasting) 模型中与 Noah-MP 土壤模型相关的两个不同模块。它们的主要区别在于它们的功能和用途:
module_sf_noahmpdrv.F
:- 功能:这个模块主要负责驱动 Noah-MP 土壤模型的整体运行。它包含了调用和管理 Noah-MP 模型各个部分的逻辑。
- 用途:用于初始化和调用 Noah-MP 模型的各个子模块,确保模型的各个部分能够协调工作。
- 示例:在这个模块中,你会看到对
module_sf_noahmplsm
中子程序的调用,以及其他与模型驱动相关的逻辑12。
module_sf_noahmplsm.F
:- 功能:这个模块包含了 Noah-MP 土壤模型的具体物理过程和计算。它实现了土壤水分、能量平衡、植被过程等具体的物理计算。
- 用途:用于执行具体的物理过程计算,是 Noah-MP 模型的核心部分。
- 示例:在这个模块中,你会看到具体的物理过程计算,如土壤水分传输、蒸散发计算等23。
总结来说,module_sf_noahmpdrv.F
是驱动模块,负责管理和调用 Noah-MP 模型的各个部分,而 module_sf_noahmplsm.F
则是实现具体物理过程的模块,负责执行土壤和植被的物理计算。
module_sf_noahmpdrv.F
noahmplsm
SUBROUTINE:- 这是 Noah-MP 模型的主要子程序,它驱动地表通量和土壤、植被状态的计算。它使用输入的气象数据、土壤和植被参数来计算感热通量、潜热通量、土壤湿度、温度等。
TRANSFER_MP_PARAMETERS
SUBROUTINE:- 这个子程序用于传输和设置 Noah-MP 模型所需的参数,包括植被、土壤和城市参数。
GROUNDWATER_INIT
SUBROUTINE:- 该子程序初始化与地下水动力学相关的变量。它考虑了地下水流动和河流与地下水之间的交换。
GECR_OS_INIT
和GECR_OS_REINIT
SUBROUTINES:- 这些子程序用于初始化和重置 GECROS 作物模型的变量。GECROS 是一个作物生长模型,用于模拟作物生长和产量。
SNOW_INIT
SUBROUTINE:- 用于初始化与降雪相关的变量,如积雪深度、温度和液态水含量。
NOAHMP_URBAN
SUBROUTINE:- 处理城市地区的特殊过程,如城市冠层模型和城市地下水模型。
EQSMOISTURE
SUBROUTINE:计算土壤水分的平衡状态。它使用土壤物理参数和地下水位来估算土壤水分。
SUBROUTINE EQSMOISTURE(NSOIL, ZSOIL, SMCMAX, SMCWLT, DWSAT, DKSAT, BEXP, SMCEQ)
:定义了一个子程序,接受多个参数,其中NSOIL
是土壤层数,ZSOIL
是各层土壤的深度,SMCMAX
是最大土壤含水量,SMCWLT
是萎凋点土壤含水量,DWSAT
是饱和土壤的干密度,DKSAT
是饱和导水率,BEXP
是与土壤水分特征曲线有关的指数,SMCEQ
是计算出的平衡含水量。IMPLICIT NONE
:声明所有变量在使用前必须显式定义。INTEGER, INTENT(IN) :: NSOIL
:定义一个输入参数NSOIL
,表示土壤层数。REAL, DIMENSION(1:NSOIL), INTENT(IN) :: ZSOIL
:定义一个输入数组ZSOIL
,表示每层土壤的深度。REAL, INTENT(IN) :: SMCMAX, SMCWLT, BEXP, DWSAT, DKSAT
:定义几个输入参数,分别表示最大土壤含水量、萎凋点土壤含水量、土壤水分特征曲线指数、饱和土壤的干密度和饱和导水率。REAL, DIMENSION(1:NSOIL), INTENT(OUT) :: SMCEQ
:定义一个输出数组SMCEQ
,用于存储每层土壤的平衡含水量。INTEGER :: K, ITER
:定义两个局部变量K
和ITER
,分别用于循环索引和迭代计数。REAL :: DDZ, SMC, FUNC, DFUNC, AA, BB, EXPON, DX
:定义了几个局部变量,用于计算过程中的中间值。DO K=1,NSOIL
:开始一个循环,遍历所有土壤层。IF
语句:根据土壤层的位置计算土壤层厚度的一半DDZ
。EXPON = BEXP + 1.
:计算指数。AA = DWSAT/DDZ
和BB = DKSAT / SMCMAX ** EXPON
:计算两个系数AA
和BB
。SMC = 0.5 * SMCMAX
:初始化土壤含水量SMC
为最大土壤含水量的一半。DO ITER = 1, 100
:开始一个迭代循环,使用牛顿-拉弗森方法求解平衡含水量。FUNC
和DFUNC
:计算函数值和导数。DX = FUNC/DFUNC
:计算牛顿-拉弗森方法中的增量。SMC = SMC - DX
:更新土壤含水量。IF (ABS(DX) < 1.E-6) EXIT
:如果增量足够小,则退出循环。SMCEQ(K) = MIN(MAX(SMC,1.E-4),SMCMAX*0.99)
:计算平衡含水量,并确保它在合理范围内。ENDDO
:结束循环。END SUBROUTINE EQSMOISTURE
:结束子程序。
这个子程序的目的是计算在给定土壤深度、最大含水量、萎凋点含水量、土壤水分特征曲线指数等参数的情况下,每层土壤的平衡含水量。它使用了牛顿-拉弗森方法来迭代求解,确保计算结果的准确性。
checkIfHarvest
FUNCTION:- 确定是否达到收获条件。如果是,返回值为 1,表示可以收获;否则返回 0。
noahmp_urban
SUBROUTINE:- 处理 Noah-MP 模型中的城市物理方案,包括城市冠层模型(UCM)和城市建筑效应参数化(BEP)。
PECOTRANSFER_SR2006
SUBROUTINE:- 执行基于输入的沙子、粘土和有机质含量的土壤水分特征曲线的 pedotransfer 函数。
noahmplsm
SUBROUTINE:- 输入: 模型配置、初始条件、气象强迫数据、土壤和植被特性等。
- 输出: 地表通量、土壤和植被状态变量的更新。
TRANSFER_MP_PARAMETERS
SUBROUTINE:- 输入: 土壤类型、植被类型、作物类型等。
- 输出: Noah-MP 模型参数的设置。
GROUNDWATER_INIT
SUBROUTINE:- 输入: 土壤层厚度、土壤类型、初始地下水位等。
- 输出: 地下水相关变量的初始化。
GECR_OS_INIT
SUBROUTINE:- 输入: 地理和作物生长参数。
- 输出: GECROS 作物模型初始化状态。
GECR_OS_REINIT
SUBROUTINE:- 输入: GECROS 作物模型当前状态。
- 输出: GECROS 作物模型重置状态。
SNOW_INIT
SUBROUTINE:- 输入: 积雪深度、温度等。
- 输出: 积雪相关的变量初始化。
EQSMOISTURE
SUBROUTINE:- 输入: 土壤物理特性参数。
- 输出: 平衡状态下的土壤含水量。
checkIfHarvest
FUNCTION:- 输入: GECROS 作物模型状态、时间步长等。
- 输出: 是否达到收获条件的判断。
noahmp_urban
SUBROUTINE:- 输入: 城市物理参数、建筑物特性、初始条件等。
- 输出: 城市地区的能量和水分通量。
PECOTRANSFER_SR2006
SUBROUTINE:- 输入: 土壤沙子、粘土和有机质含量。
- 输出: 土壤水分特征曲线参数。
这些子程序共同构成了 Noah-MP 模型的核心部分,负责处理从地表能量和水分平衡到作物生长和城市物理过程的模拟。每个子程序都通过输入参数接收必要的数据,并输出计算结果,以供其他子程序或主程序使用。
module_sf_noahmplsm.F
SUBROUTINE NOAHMP_SFLX
这个子程序名为 NOAHMP_SFLX
,是Fortran模块的一部分,它是Noah陆面过程模型(MP LSM)的一部分。该子程序旨在计算能量和水的表面通量,并与大气模型接口,提供必要的表面反馈。以下是其结构和关键组件的详细分解:
目的
子程序 NOAHMP_SFLX
用于计算各种表面通量,包括能量平衡组分(感热和潜热通量、辐射等)、水平衡组分(降水、蒸发、径流等)以及碳平衡组分(光合作用、呼吸作用等)。它适用于气候模型或天气研究预测(WRF)模型。
关键输入和输出
- 输入 包括气象变量(如温度、湿度、风速)、地表特征(植被类型、土壤属性)和初始条件(积雪深度、土壤湿度)。
- 输出 包括更新的表面状态(新的土壤湿度、温度剖面等)、通量(感热和潜热、蒸发、径流)以及碳循环变量。
详细分解
输入:
- 气象强迫:温度、湿度、风速、入射太阳辐射、降水。
- 地表特征:植被类型、土壤属性、初始土壤湿度和温度。
- 初始条件:积雪深度、土壤湿度等。
输出:
- 通量:感热通量、潜热通量、地热通量、蒸发、蒸腾。
- 更新的状态:更新的土壤湿度、土壤温度、积雪深度、植被含水量。
- 碳平衡:光合作用、呼吸作用。
调用的子程序:
ATM
:处理大气强迫。PHENOLOGY
:处理植被物候。PRECIP_HEAT
:管理由于降水引起的热和水平衡。ENERGY
:计算地表的能量平衡。WATER
:管理水平衡。CARBON
:如果动态植被活跃,计算碳通量。ERROR
:执行水和能量平衡的误差检查。
局部变量:
- 使用各种局部变量进行子程序内的中间计算。
流程描述:
- 大气强迫处理:将原始气象输入转换为适合地表计算的形式。
- 植被物候:根据环境条件计算植被状态的变化。
- 降水和热通量:确定入降水如何影响地表热和水平衡。
- 能量平衡:计算地表与大气之间的各种热通量。
- 水平衡:管理所有水通量,包括蒸发、蒸腾、径流和土壤湿度变化。
- 碳平衡:如果动态植被活跃,计算光合作用和呼吸作用。
- 误差检查:确保水和能量平衡是守恒的。
特别功能
- 动态植被:可以切换不同的植被动态模型。
- 灌溉:包括灌溉农业的模型。
- 瓦片排水:包括在农业设置中模拟瓦片排水的选项。
使用方法
此子程序通常在较大的建模框架内调用,它为大气提供地表反馈。它设计得非常灵活,可以适应各种应用,包括气候研究、天气预报和水文建模。
此子程序是数值模型中陆-气相互作用的关键组成部分,提供了地表如何处理能量、水和碳的详细表示。
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)等。
计算过程
- 初始化:设置一些局部变量和输出变量的初始值。
- 地表反照率计算:根据地表覆盖情况(植被、雪等)计算地表反照率。
- 植被和地表感热、潜热通量计算:通过植被和裸土的通量计算子程序(
VEGE_FLUX
和BARE_FLUX
),分别计算植被覆盖部分和裸土部分的能量通量。 - 地表温度和能量平衡:计算地表温度、感热通量、潜热通量和土壤热通量。
- 土壤和雪层温度计算:通过
TSNOSOI
子程序,计算土壤和雪层的温度变化。 - 相变过程计算:通过
PHASECHANGE
子程序,计算积雪的融化和土壤的冻结/融化过程。
应用
这个子程序是陆面模型中的关键部分,它确保了模型能够模拟地表能量平衡和水热交换,这对于理解地表水文过程和能量平衡至关重要。
这个子程序的设计使其能够适应不同的气象条件和地表类型,为陆面模型提供了必要的灵活性和准确性。