Mod5 利用MODTRAN模拟辐照度数据代码及参数详解

关于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

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值