
Mod5 利用MODTRAN模拟辐照度数据代码及参数详解
这里描述的Matlab类封装器Mod5不是一个GUI。它提供了一组函数(在面向对象编程术语中称为“方法”),这些函数简化了MODTRAN案例的处理。这些方法包括将tape5文件格式读入Mod5类的“实例”或“对象”中,更改文件中描述的案例实例,将tape5格式写回文件,运行MODTRAN进行案例计算,并将各种结果从MODTRAN输出文件读回Matlab。还提供了许多绘图方法。
·
关于Mod5封装程序见上一篇帖子:Mod5 – 用于MODTRAN 5的Matlab类封装器
下面附上实例代码,主要对输入参数进行了注释。
%% Direct Solar Irradiance Case
% 2023/11/02 xinwen
% 关于参数设置有任何疑问 可以查看主程序 Mod5.m(第8570行开始)
close all
clear variables
% Set parallel friendly mode (allows multiple MODTRAN cases to run in parallel
% on the same computer without a conflict.
% 设置并行友好模式(允许多个MODTRAN案例并行运行在同一台计算机上,没有冲突。)
Mod5.ParallelFriendly(true);
% This case is visible/near-infared (VIS/NIR) wavelengths
%新建一个空的Mod5对象
Irrad1 = Mod5;
% Set up name and short description
Irrad1= Irrad1.SetCaseName('Irrad1'); % Must use SetCaseName method to set name
Irrad1.CaseDescr = '这里是一个模拟辐照度的demo';
%Mod5.CaseDescr函数说明
% 位于function plothandle = Plot(MODCase, PlotFlag) 内
% if isempty(MODCase(iCase).CaseDescr)
% title([MODCase(iCase).CaseName '(' num2str(MODCase(iCase).CaseIndex) ') - Convolved']);
% else
% title([MODCase(iCase).CaseDescr '(' num2str(MODCase(iCase).CaseIndex) ') - Convolved']);
% end
%设置 Card 1 (mandatory - main radiative transport)
% Card 1A 包括了主要的控制运行参数,:如采用何种辐射传输程序,是否进行多次散射计算等。
% 这些主要在CARD1中完成,CARD5提供了多重复计算的选项。
% function MC = Set(MC, varargin)
% Set : Set any number of Mod5 properties in one function call
%
% Usage :
% MC = MC.Set(Property1, Value1, Property2, Value2, ...)
% Where :
% The Properties are valid Mod5 properties, including
% any of the MODTRAN parameters. The order of the property
% value pairs is not important, nor do they have to appear on
% a single MODTRAN Card.
%
% Example :
%
% MC = MC.Set('MODTRN', 'M','SPEED','S','MODEL', 3, 'BINARY', 'F', 'LYMOLC', ' ', 'ITYPE', 3, 'IEMSCT', 2, ...
% 'IMULT', 0, 'M1', 0, 'M2', 0, 'M3', 0, 'M4', 0, 'M5', 0 , 'M6', 0, ...
% 'MDEF', 0, 'I_RD2C', 0, 'NOPRNT', 1, 'TPTEMP', 0, 'SURREF', '0.5');
% Card1 参数说明(参数详细说明见用户手册或北师大ppt或Atmospheric Modeling Using PcModWin/MODTRAN)
% 参数格式 '参数名,设置代码'(区分数字和字符)或者 MC.设置代码 = ''
% 'MODTRN':运行模式
% 'SPEED':运行速度
% 'MODEL':大气廓线类型
% 'BINARY':输出文件的类型
% 'LYMOLC':辅助的大气痕量
% 'ITYPE':大气路径类型
% 'IEMSCT':反演参数(Direct solar irradiance)
% 'IMULT':多次散射
% 'M1', 'M2', 'M3', 'M4', 'M5', 'M6':水汽,氧气,甲烷,N2O,CO的大气廓线
% 'MDEF':大气廓线数据使用默认值或者由用户输入
% 'I_RD2C':0用于程序的正常运行或在运行计算时使用最后一次读取的大气模型。 1当读取用户输入数据时
% 'NOPRNT':关于tape6 tape7 以及tape8 的设置,具体见手册
% 'TPTEMP':边界层温度
% 'SURREF':BRDF或者lamber
% The above example sets all parameters on MODTRAN Card1. Remember
% that if MODTRAN requires a particular card, it is important to
% set all parameters on that card, even if they are not used in a
% particular case.
Irrad1 = Irrad1.Set('MODTRN', 'M','SPEED','M','BINARY', 'F', 'LYMOLC', ' ', 'MODEL', 2, 'ITYPE', 3, 'IEMSCT', 3, ...
'IMULT', 0, 'M1', 0, 'M2', 0, 'M3', 0, 'M4', 0, 'M5', 0 , 'M6', 0, ...
'MDEF', 0, 'I_RD2C', 0, 'NOPRNT', 1, 'TPTEMP', 0, 'SURREF', '0.0');
%设置 Card 1A (mandatory - supplementary radiative transport parameters)
% Card1A (多次散射和方位角计算方法) 提供了散射选项的选择,分子轮廓的缩放,定制的TOA太阳辐照度规格的数据文件,和气溶胶光学性质的angstrom-law扰动
% 'DIS': DISORT 多次散射 在CARD1中的IMULT=±1时此参数使用, DIS设置True(t)激活DISORT多次散射算法, DIS设置为False(f或空格)使用Isaac的二流算法计算多次散射
% 'DISAZM':DISORT算法的太阳方位角相关标识
% 'DISALB':与光谱球面反射率有关的参数
% 'BINARY': 输出文件的类型
% 'NSTR':DISORT算法的计算流数(推荐为8)
% 'SFWHM':用于平滑TOA太阳辐照度三角形响应函数的半峰全宽
% 'CO2MX':CO2体积混合比(当前大气的??)
% 'H2OSTR':垂直水汽柱
% 'O3STR':垂直臭氧柱
% 'C_PROF':与分子轮廓缩放有关的参数
% 'LSUNFL':太阳辐照度文件来源
% 'LBMNAM':关于tape6 tape7 以及tape8 的设置,具体见手册
% 'LFLTNM':If true, read instrument band filter data from file named on Card 1A3.
% 'H2OAER':if ture,水汽气溶胶特性随着水汽柱的浓度而改变
% 'SOLCON':TOA 辐照度的缩放因子参数
Irrad1 = Irrad1.Set('DIS', 'f', 'DISAZM', 'f', 'DISALB', ' ', 'NSTR', 2, 'SFWHM', 5, ...
'CO2MX', 410, 'H2OSTR', '0.6', 'O3STR', '1', 'C_PROF', ' ', 'LSUNFL', 'f', ...
'LBMNAM', 'f', 'LFLTNM', 'f', 'H2OAER', 'f', 'SOLCON', 0);
%设置 Card 1A3,读取光谱响应函数
% Irrad1.FILTNM = ''
%设置 Card 2 (mandatory - main aerosol and cloud options)
%Card 2 主要关于气溶胶和云的设置
% 'APLUS':默认或 用Aersol plus选项触发Card2A+读取用户自定义的气溶胶文件
% 'IHAZE': 气溶胶类型
% 'CNOVAM':默认或海军垂直气溶胶模型
% 'ISEASN':气溶胶的季节选择
% 'ARUSS':气溶胶光学特性有关的参数
% 'IVULCN':控制选择气溶胶文件和平流层气溶胶衰消减类型的参数
% 'ICSTL':为CNOVAM选择先验气团特性的参数
% 'ICLD':指定云雨模型的参数
% 'IVSA':选择使用气溶胶边界层的陆军垂直结构算法
% 'VIS':指定覆盖与INHAZE选择的边界层相关联的默认值的地面气象范围
% 'WSS':Current wind speed to modify navy maritime and desert aerosol models (no influence on other models)
% 'WHH':Average wind speed for last 24 hours. Also only for navy maritime (IHAZE = 3) and desert (IHAZE = 10) models
% 'RAINRT':Rain rate in mm/hour
% 'GNDALT':Ground altitude in km 地表的水平面高度
% IHAZE = 1 for rural extinction, VIS = 23 km, no clouds or rain
% Ground altitude of 1400 m
Irrad1 = Irrad1.Set('APLUS', '', 'IHAZE', 1, 'CNOVAM', ' ', 'ISEASN', 0, 'ARUSS', '', ...
'IVULCN', 0, 'ICSTL', 0, 'ICLD', 0, 'IVSA', 0, 'VIS', 0, 'WSS', 0, ...
'WHH', 0, 'RAINRT', 0, 'GNDALT', 1.4);
%设置 Alternate Card 3 (mandatory for solar irradiance cases, IEMSCT = 3,反演参数为Direct solar irradiance)
% MODTRAN根据在CARD1选择的路径不同,需要的观测几何输入参数也不同
% Line-of-sight geometry, solar zenith angle of 30 degrees, observer altitude 1.4 km
%Card 3 观测几何:太阳-地物-遥感器之间的角度关系 涉及:入射与观测天顶角、方位角夹角;观测高度
% 'H1':观测高度(传感器高度)
% 'H2': 观测距离(目标高度)
% 'ANGLE':Initial zenith angle of LOS (degrees)
% 观测天定角(观测天顶角以向上观测为0°,顺时针旋转增大,水平观测为90°,向下观测间于(90,180],垂直观测为180°
% 当向上观测时,观测高度应该小于目标高度;当向下观测时,观测高度应大于目标高度(原文表述错误)
% 观测距离不小于观测高度与目标高度的直线距离
% 'IDAY':Day of the year
% 'RO':Earth radius at latitude of calculation (km) 地球半径在纬度的计算
% 'ISOURC':选择太阳或月亮作为光源进行辐照度计算(IEMSCT = 3)
% 'ANGLEM':用于计算月球辐照度的月球相位角
Irrad1 = Irrad1.Set('H1', 1.4, 'H2', 0, 'ANGLE', 30, 'IDAY', [2010 2 22], 'RO', 0, ...
'ISOURC', 0, 'ANGLEM', 0);
%设置 Card 4 (mandatory - Spectral Range and Resolution)
%用于设置光谱范围,频率/波长增量和输出的光谱衰减。包括MODTRAN运行的起始和终止波长或者波数、频率增量、采样函数和半高宽度光谱响应、文件输出控制等
% 'APLUS':默认或 用Aersol plus选项触发Card2A+读取用户自定义的气溶胶文件
% 'V1': 开始进行MODTRAN计算的光谱范围,单位为波长[cm-1](单位也可以根据FLAGS(1:1)定义)
% 'V2':用于MODTRAN计算的光谱范围结束
% 'DV':用于MODTRAN计算的光谱步长
% 'FWHM':输出采样函数的平滑度,slit function由FLAGS(2:2)定义 通常为三角形响应函数
% 'YFLAG':控制透光率或辐射输出到绘图文件
% 'XFLAG':控制绘图文件中的单位
% 'FLAGS':绘图文件中多个绘图的分隔符
% 'NGA':??
Irrad1 = Irrad1.Set('V1', 350, 'V2', 1000, 'DV', 0.5, 'FWHM', 2, 'YFLAG', ' ', ...
'XFLAG', '', 'DLIMIT', '', 'FLAGS', 'NGA ');
% Set up Card 5 (mandatory - Repeat Run Option)
Irrad1.IRPT = 0; % Stop program 运行下一子例或终止的MODTRAN控制标志。
% Run MODTRAN
Irrad1 = Irrad1.Run;
% The solar irradiance at H1 will be in Irrad1.tp7.SOLTR (unconvolved)
% and in Irrad1.sc7.SOLTR (convolved with Gaussian filter of 2 nm FWHM)
% Plot the transmitted solar irradiance (convolved)
Irrad1.PlotSc7('SOLTR');
% Compute the integrated transmitted solar irradiance in the band (350 to 1000 nm)
TotalSolar = trapz(Irrad1.sc7.WAVLNM, Irrad1.sc7.SOLTR);
% Create a series of cases based on Irrad1 with solar zenith angles of 0 and 40 deg,
% and with visibilities of 10 and 20 km
Irrad1 = Irrad1.CreateSeries('ANGLE', {0 40}, 'VIS', {10 20});
% Run MODTRAN on the series
Irrad1 = Irrad1.Run;
% Plot the transmitted solar irradiance for the whole series on a single graph
Irrad1.PlotSc7('SOLTR');
% The legends are :
% Irrad1(1) : 0 deg zenith angle, 10 km visibility
% Irrad1(2) : 40 deg zenith angle, 10 km visibility
% Irrad1(3) : 0 deg zenith angle, 20 km visibility
% Irrad1(4) : 40 deg zenith angle, 20 km visibility

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐
所有评论(0)