增加注释,生成 API 文档
This commit is contained in:
parent
95b61d7a13
commit
305ab5c526
7
.gitignore
vendored
7
.gitignore
vendored
@ -48,4 +48,9 @@ Thumbs.db
|
|||||||
# 其他
|
# 其他
|
||||||
*.swp
|
*.swp
|
||||||
*.*~
|
*.*~
|
||||||
project.lock.json
|
project.lock.json
|
||||||
|
|
||||||
|
# 文档
|
||||||
|
_site/
|
||||||
|
_site_pdf/
|
||||||
|
api/
|
||||||
|
|||||||
BIN
api_doc.pdf
Normal file
BIN
api_doc.pdf
Normal file
Binary file not shown.
63
docfx.json
Normal file
63
docfx.json
Normal file
@ -0,0 +1,63 @@
|
|||||||
|
{
|
||||||
|
"metadata": [
|
||||||
|
{
|
||||||
|
"src": [
|
||||||
|
{
|
||||||
|
"files": [
|
||||||
|
"src/**.csproj"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"dest": "api",
|
||||||
|
"disableGitFeatures": false,
|
||||||
|
"disableDefaultFilter": false
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"build": {
|
||||||
|
"content": [
|
||||||
|
{
|
||||||
|
"files": [
|
||||||
|
"api/**.yml",
|
||||||
|
"api/index.md"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"files": [
|
||||||
|
"docs/**.md",
|
||||||
|
"docs/**/toc.yml",
|
||||||
|
"toc.yml",
|
||||||
|
"*.md"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"resource": [
|
||||||
|
{
|
||||||
|
"files": [
|
||||||
|
"images/**"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"overwrite": [
|
||||||
|
{
|
||||||
|
"files": [
|
||||||
|
"apidoc/**.md"
|
||||||
|
],
|
||||||
|
"exclude": [
|
||||||
|
"obj/**",
|
||||||
|
"_site/**"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"dest": "_site",
|
||||||
|
"globalMetadataFiles": [],
|
||||||
|
"fileMetadataFiles": [],
|
||||||
|
"template": [
|
||||||
|
"default"
|
||||||
|
],
|
||||||
|
"postProcessors": [],
|
||||||
|
"noLangKeyword": false,
|
||||||
|
"keepFileLink": false,
|
||||||
|
"cleanupCacheHistory": false,
|
||||||
|
"disableGitFeatures": false
|
||||||
|
}
|
||||||
|
}
|
||||||
28
docfx.pdf.json
Normal file
28
docfx.pdf.json
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
{
|
||||||
|
"pdf": {
|
||||||
|
"content": [
|
||||||
|
{
|
||||||
|
"files": [
|
||||||
|
"api/**.yml",
|
||||||
|
"docs/usage_examples.md"
|
||||||
|
],
|
||||||
|
"exclude": [
|
||||||
|
"**/toc.yml",
|
||||||
|
"**/toc.md"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"name": "AirTransmission-API-Doc",
|
||||||
|
"title": "大气传输计算库 API 文档",
|
||||||
|
"coverPage": {
|
||||||
|
"title": "大气传输计算库",
|
||||||
|
"author": "田建勇",
|
||||||
|
"version": "v1.0.0",
|
||||||
|
"date": "2024年3月"
|
||||||
|
},
|
||||||
|
"wkhtmltopdf": {
|
||||||
|
"additionalArguments": "--enable-local-file-access"
|
||||||
|
},
|
||||||
|
"outputFolder": "_site_pdf"
|
||||||
|
}
|
||||||
|
}
|
||||||
43
docs/custom.css
Normal file
43
docs/custom.css
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
/* 隐藏目录切换按钮 */
|
||||||
|
.sideaffix,
|
||||||
|
.sidetoc,
|
||||||
|
.toc-filter,
|
||||||
|
#toc_filter_input,
|
||||||
|
.toc-toggle,
|
||||||
|
button[data-toggle="toc"] {
|
||||||
|
display: none !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 隐藏导航按钮 */
|
||||||
|
.mobile-hide {
|
||||||
|
display: none !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 隐藏顶部导航栏 */
|
||||||
|
.navbar {
|
||||||
|
display: none !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 隐藏面包屑导航 */
|
||||||
|
.subnav {
|
||||||
|
display: none !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 移除文档内容的左边距 */
|
||||||
|
.article {
|
||||||
|
margin-left: 0 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 隐藏页脚 */
|
||||||
|
.footer {
|
||||||
|
display: none !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 隐藏所有导航相关元素 */
|
||||||
|
.nav,
|
||||||
|
.nav-tabs,
|
||||||
|
.navigation,
|
||||||
|
.pull-right,
|
||||||
|
.toggle-mode {
|
||||||
|
display: none !important;
|
||||||
|
}
|
||||||
145
docs/generate_pdf.md
Normal file
145
docs/generate_pdf.md
Normal file
@ -0,0 +1,145 @@
|
|||||||
|
# 生成 API 文档 PDF 指南
|
||||||
|
|
||||||
|
本文档说明如何将 API 文档转换为 PDF 格式。
|
||||||
|
|
||||||
|
## 前提条件
|
||||||
|
|
||||||
|
1. 安装 DocFX
|
||||||
|
|
||||||
|
```bash
|
||||||
|
dotnet tool install -g docfx
|
||||||
|
```
|
||||||
|
|
||||||
|
2. 安装 wkhtmltopdf
|
||||||
|
从官方网站下载并安装:<https://wkhtmltopdf.org/downloads.html>
|
||||||
|
|
||||||
|
## 生成步骤
|
||||||
|
|
||||||
|
1. 首先生成 API 文档的 HTML 文件:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docfx build docfx.json
|
||||||
|
```
|
||||||
|
|
||||||
|
这会在 `_site` 目录下生成 HTML 文档。
|
||||||
|
|
||||||
|
2. 使用 wkhtmltopdf 将 HTML 文件转换为 PDF:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
wkhtmltopdf --enable-local-file-access \
|
||||||
|
_site/api/AirTransmission.html \
|
||||||
|
_site/api/AirTransmission.WeatherType.html \
|
||||||
|
_site/api/AirTransmission.WeatherCondition.html \
|
||||||
|
_site/api/AirTransmission.AtmosphericTransmittanceCalculator.html \
|
||||||
|
api_doc.pdf
|
||||||
|
```
|
||||||
|
|
||||||
|
## PDF 格式优化选项
|
||||||
|
|
||||||
|
如果需要优化 PDF 输出效果,可以添加以下 wkhtmltopdf 参数:
|
||||||
|
|
||||||
|
1. 页面大小和方向:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
--page-size A4 --orientation Portrait
|
||||||
|
```
|
||||||
|
|
||||||
|
2. 页边距(单位:毫米):
|
||||||
|
|
||||||
|
```bash
|
||||||
|
--margin-top 20 --margin-bottom 20 --margin-left 20 --margin-right 20
|
||||||
|
```
|
||||||
|
|
||||||
|
3. 添加页眉页脚:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
--header-center "[page]/[topage]" \
|
||||||
|
--header-line \
|
||||||
|
--footer-center "大气传输计算库 API 文档" \
|
||||||
|
--footer-line \
|
||||||
|
--footer-spacing 10 \
|
||||||
|
--footer-font-size 8
|
||||||
|
```
|
||||||
|
|
||||||
|
4. 封面和目录:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cover _site/docs/introduction.html \
|
||||||
|
toc --toc-header-text "目录"
|
||||||
|
```
|
||||||
|
|
||||||
|
5. 自定义样式:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
--user-style-sheet docs/custom.css
|
||||||
|
```
|
||||||
|
|
||||||
|
自定义样式文件 `custom.css` 的内容:
|
||||||
|
```css
|
||||||
|
/* 隐藏目录切换按钮 */
|
||||||
|
.sideaffix {
|
||||||
|
display: none !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 隐藏导航按钮 */
|
||||||
|
.mobile-hide {
|
||||||
|
display: none !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 隐藏顶部导航栏 */
|
||||||
|
.navbar {
|
||||||
|
display: none !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 隐藏面包屑导航 */
|
||||||
|
.subnav {
|
||||||
|
display: none !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 移除文档内容的左边距 */
|
||||||
|
.article {
|
||||||
|
margin-left: 0 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 隐藏页脚 */
|
||||||
|
.footer {
|
||||||
|
display: none !important;
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
完整的优化命令示例:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
wkhtmltopdf \
|
||||||
|
--enable-local-file-access \
|
||||||
|
--page-size A4 \
|
||||||
|
--orientation Portrait \
|
||||||
|
--margin-top 20 \
|
||||||
|
--margin-bottom 20 \
|
||||||
|
--margin-left 20 \
|
||||||
|
--margin-right 20 \
|
||||||
|
--header-center "[page]/[topage]" \
|
||||||
|
--header-line \
|
||||||
|
--footer-center "大气传输计算库 API 文档" \
|
||||||
|
--footer-line \
|
||||||
|
--footer-spacing 10 \
|
||||||
|
--footer-font-size 8 \
|
||||||
|
--user-style-sheet docs/custom.css \
|
||||||
|
cover _site/docs/introduction.html \
|
||||||
|
toc --toc-header-text "目录" \
|
||||||
|
_site/docs/usage_examples.html \
|
||||||
|
_site/api/AirTransmission.html \
|
||||||
|
_site/api/AirTransmission.WeatherType.html \
|
||||||
|
_site/api/AirTransmission.WeatherCondition.html \
|
||||||
|
_site/api/AirTransmission.AtmosphericTransmittanceCalculator.html \
|
||||||
|
api_doc.pdf
|
||||||
|
```
|
||||||
|
|
||||||
|
## 注意事项
|
||||||
|
|
||||||
|
1. 确保所有的 HTML 文件都已经正确生成
|
||||||
|
2. 如果遇到路径问题,请使用完整的文件路径
|
||||||
|
3. 如果文档包含中文,确保系统安装了相应的中文字体
|
||||||
|
4. 生成的 PDF 文件默认保存在当前目录下
|
||||||
|
5. 封面页不会显示页眉和页脚
|
||||||
|
6. 自定义样式可以隐藏不需要的 HTML 元素
|
||||||
40
docs/introduction.md
Normal file
40
docs/introduction.md
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
# 大气传输计算库
|
||||||
|
|
||||||
|
## 简介
|
||||||
|
|
||||||
|
大气传输计算库(AirTransmission)是一个用于计算大气传输特性的 .NET 类库。它提供了一系列工具和模型,用于计算不同天气条件下的大气透过率和大气湍流影响。
|
||||||
|
|
||||||
|
### 主要功能
|
||||||
|
|
||||||
|
1. 大气透过率计算
|
||||||
|
- 支持多种波长范围(紫外、可见光、红外、毫米波)
|
||||||
|
- 考虑多种天气条件(晴天、多云、雨天等)
|
||||||
|
- 计算不同传输距离的影响
|
||||||
|
|
||||||
|
2. 大气湍流模型
|
||||||
|
- 计算大气湍流强度
|
||||||
|
- 评估湍流对传输的影响
|
||||||
|
|
||||||
|
3. 天气条件模型
|
||||||
|
- 温度、湿度、气压等参数的综合影响
|
||||||
|
- 能见度和天气类型的影响
|
||||||
|
|
||||||
|
### 适用场景
|
||||||
|
|
||||||
|
- 激光传输系统设计
|
||||||
|
- 光电设备性能评估
|
||||||
|
- 大气光学研究
|
||||||
|
- 气象影响分析
|
||||||
|
|
||||||
|
### 技术特点
|
||||||
|
|
||||||
|
- 基于 .NET 8.0 开发
|
||||||
|
- 支持跨平台运行
|
||||||
|
- 提供 C# 原生支持
|
||||||
|
- 通过 C++/CLI 包装器支持 C++ 调用
|
||||||
|
- 完整的 API 文档和使用示例
|
||||||
|
|
||||||
|
### 版本信息
|
||||||
|
|
||||||
|
- 版本:1.0.0
|
||||||
|
- 发布日期:2024年10月
|
||||||
25
docs/toc.yml
Normal file
25
docs/toc.yml
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
- name: 使用示例
|
||||||
|
href: usage_examples.md
|
||||||
|
- name: 大气透过率计算器
|
||||||
|
href: api/AirTransmission.AtmosphericTransmittanceCalculator.yml
|
||||||
|
- name: 天气条件
|
||||||
|
href: api/AirTransmission.WeatherCondition.yml
|
||||||
|
- name: 传输模型
|
||||||
|
items:
|
||||||
|
- name: 基础模型
|
||||||
|
href: api/AirTransmission.TransmittanceModel.yml
|
||||||
|
- name: 激光传输模型
|
||||||
|
href: api/AirTransmission.LaserTransmittanceModel.yml
|
||||||
|
- name: 红外传输模型
|
||||||
|
href: api/AirTransmission.IRTransmittanceModel.yml
|
||||||
|
- name: 紫外传输模型
|
||||||
|
href: api/AirTransmission.UVTransmittanceModel.yml
|
||||||
|
- name: 毫米波传输模型
|
||||||
|
href: api/AirTransmission.MillimeterWaveTransmittanceModel.yml
|
||||||
|
- name: 大气湍流模型
|
||||||
|
href: api/AirTransmission.AtmosphericTurbulenceModel.yml
|
||||||
|
- name: API 文档
|
||||||
|
href: api/
|
||||||
|
homepage: api/AirTransmission.html
|
||||||
|
- name: PDF 生成指南
|
||||||
|
href: generate_pdf.md
|
||||||
165
docs/usage_examples.md
Normal file
165
docs/usage_examples.md
Normal file
@ -0,0 +1,165 @@
|
|||||||
|
# 使用示例
|
||||||
|
|
||||||
|
本文档提供了使用大气传输计算库的 C# 和 C++ 示例代码。
|
||||||
|
|
||||||
|
## C# 示例
|
||||||
|
|
||||||
|
### 基本使用
|
||||||
|
|
||||||
|
```csharp
|
||||||
|
using AirTransmission;
|
||||||
|
|
||||||
|
// 创建天气条件
|
||||||
|
var weather = new WeatherCondition
|
||||||
|
{
|
||||||
|
Temperature = 20, // 温度(摄氏度)
|
||||||
|
Humidity = 0.65, // 相对湿度(0-1)
|
||||||
|
Pressure = 101.325, // 大气压力(kPa)
|
||||||
|
Visibility = 10000, // 能见度(米)
|
||||||
|
WeatherType = WeatherType.Clear // 天气类型
|
||||||
|
};
|
||||||
|
|
||||||
|
// 创建大气透过率计算器
|
||||||
|
var calculator = new AtmosphericTransmittanceCalculator();
|
||||||
|
|
||||||
|
// 计算激光透过率
|
||||||
|
double wavelength = 1.064; // 波长(微米)
|
||||||
|
double distance = 1000; // 传输距离(米)
|
||||||
|
double transmittance = calculator.CalculateTransmittance(wavelength, distance, weather);
|
||||||
|
|
||||||
|
Console.WriteLine($"激光透过率: {transmittance:P2}");
|
||||||
|
```
|
||||||
|
|
||||||
|
### 高级用法
|
||||||
|
|
||||||
|
```csharp
|
||||||
|
// 计算不同天气条件下的透过率
|
||||||
|
var weatherConditions = new[]
|
||||||
|
{
|
||||||
|
new WeatherCondition { WeatherType = WeatherType.Clear, Temperature = 20, Humidity = 0.65 },
|
||||||
|
new WeatherCondition { WeatherType = WeatherType.Cloudy, Temperature = 18, Humidity = 0.8 },
|
||||||
|
new WeatherCondition { WeatherType = WeatherType.Rain, Temperature = 15, Humidity = 0.95 }
|
||||||
|
};
|
||||||
|
|
||||||
|
var calculator = new AtmosphericTransmittanceCalculator();
|
||||||
|
double wavelength = 1.064; // 微米
|
||||||
|
double distance = 1000; // 米
|
||||||
|
|
||||||
|
foreach (var weather in weatherConditions)
|
||||||
|
{
|
||||||
|
var transmittance = calculator.CalculateTransmittance(wavelength, distance, weather);
|
||||||
|
Console.WriteLine($"天气: {weather.WeatherType}, 透过率: {transmittance:P2}");
|
||||||
|
}
|
||||||
|
|
||||||
|
// 计算大气湍流影响
|
||||||
|
var turbulence = calculator.CalculateAtmosphericTurbulence(wavelength, distance, weather);
|
||||||
|
Console.WriteLine($"大气湍流强度: {turbulence:E2}");
|
||||||
|
```
|
||||||
|
|
||||||
|
## C++ 调用说明
|
||||||
|
|
||||||
|
由于 AirTransmission 是 .NET 动态库,C++ 程序需要通过 C++/CLI 包装器来调用。
|
||||||
|
|
||||||
|
### C++/CLI 包装器使用方法
|
||||||
|
|
||||||
|
1. 创建包装器项目(由库作者提供):
|
||||||
|
|
||||||
|
```cpp
|
||||||
|
// AirTransmissionWrapper.h
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
namespace AirTransmissionWrapper {
|
||||||
|
public enum class WeatherType {
|
||||||
|
Clear = 0,
|
||||||
|
Cloudy = 1,
|
||||||
|
Rain = 2
|
||||||
|
};
|
||||||
|
|
||||||
|
public ref class WeatherCondition {
|
||||||
|
public:
|
||||||
|
property double Temperature;
|
||||||
|
property double Humidity;
|
||||||
|
property double Pressure;
|
||||||
|
property double Visibility;
|
||||||
|
property WeatherType Type;
|
||||||
|
};
|
||||||
|
|
||||||
|
public ref class Calculator {
|
||||||
|
public:
|
||||||
|
Calculator();
|
||||||
|
double CalculateTransmittance(double wavelength, double distance, WeatherCondition^ weather);
|
||||||
|
double CalculateAtmosphericTurbulence(double wavelength, double distance, WeatherCondition^ weather);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
2. 在 C++ 代码中使用包装器:
|
||||||
|
|
||||||
|
```cpp
|
||||||
|
#include <iostream>
|
||||||
|
#include "AirTransmissionWrapper.h"
|
||||||
|
|
||||||
|
int main() {
|
||||||
|
using namespace AirTransmissionWrapper;
|
||||||
|
|
||||||
|
// 创建天气条件
|
||||||
|
WeatherCondition^ weather = gcnew WeatherCondition();
|
||||||
|
weather->Temperature = 20.0; // 温度(摄氏度)
|
||||||
|
weather->Humidity = 0.65; // 相对湿度(0-1)
|
||||||
|
weather->Pressure = 101.325; // 大气压力(kPa)
|
||||||
|
weather->Visibility = 10000.0; // 能见度(米)
|
||||||
|
weather->Type = WeatherType::Clear;
|
||||||
|
|
||||||
|
// 创建计算器
|
||||||
|
Calculator^ calculator = gcnew Calculator();
|
||||||
|
|
||||||
|
// 计算透过率
|
||||||
|
double wavelength = 1.064; // 波长(微米)
|
||||||
|
double distance = 1000.0; // 传输距离(米)
|
||||||
|
double transmittance = calculator->CalculateTransmittance(wavelength, distance, weather);
|
||||||
|
|
||||||
|
std::cout << "透过率: " << transmittance * 100.0 << "%" << std::endl;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
## 项目配置
|
||||||
|
|
||||||
|
### C# 项目
|
||||||
|
|
||||||
|
1. 在 Visual Studio 中创建新的 .NET 项目
|
||||||
|
2. 通过 NuGet 包管理器添加 AirTransmission 包:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
dotnet add package AirTransmission
|
||||||
|
```
|
||||||
|
|
||||||
|
### C++ 项目
|
||||||
|
|
||||||
|
1. 在 Visual Studio 中创建新的 C++ 项目
|
||||||
|
2. 项目配置:
|
||||||
|
- 包含目录:添加 AirTransmissionWrapper.h 所在目录
|
||||||
|
- 库目录:添加 AirTransmissionWrapper.lib 所在目录
|
||||||
|
- 链接器输入:添加 AirTransmissionWrapper.lib
|
||||||
|
3. 确保以下 DLL 在可执行文件的同一目录下:
|
||||||
|
- AirTransmissionWrapper.dll
|
||||||
|
- AirTransmission.dll
|
||||||
|
|
||||||
|
## 注意事项
|
||||||
|
|
||||||
|
1. 所有浮点数输入都使用 double 类型
|
||||||
|
2. 波长单位为微米(μm)
|
||||||
|
3. 距离单位为米(m)
|
||||||
|
4. 温度单位为摄氏度(℃)
|
||||||
|
5. 压力单位为千帕(kPa)
|
||||||
|
6. 相对湿度范围为 0-1
|
||||||
|
7. 确保输入参数在合理范围内:
|
||||||
|
- 波长:0.2-20 μm
|
||||||
|
- 距离:> 0 m
|
||||||
|
- 温度:-40 到 +60 ℃
|
||||||
|
- 相对湿度:0-1
|
||||||
|
- 压力:80-120 kPa
|
||||||
|
8. C++ 调用注意事项:
|
||||||
|
- 使用 `^` 符号声明托管对象
|
||||||
|
- 使用 `gcnew` 创建托管对象
|
||||||
|
- 包装器类中的所有对象都需要使用托管引用
|
||||||
10
filterConfig.yml
Normal file
10
filterConfig.yml
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
apiRules:
|
||||||
|
- include:
|
||||||
|
uidRegex: ^AirTransmission
|
||||||
|
type: Namespace
|
||||||
|
- include:
|
||||||
|
uidRegex: ^AirTransmission\..*
|
||||||
|
type: Type
|
||||||
|
- include:
|
||||||
|
uidRegex: ^AirTransmission\..*
|
||||||
|
type: Member
|
||||||
@ -6,8 +6,16 @@
|
|||||||
<members>
|
<members>
|
||||||
<member name="T:AirTransmission.AtmosphericTransmittanceCalculator">
|
<member name="T:AirTransmission.AtmosphericTransmittanceCalculator">
|
||||||
<summary>
|
<summary>
|
||||||
大气透过率计算器
|
大气透过率计算器,提供各种电磁波在大气中传输的透过率计算方法
|
||||||
</summary>
|
</summary>
|
||||||
|
<remarks>
|
||||||
|
支持以下电磁波类型的透过率计算:
|
||||||
|
- 激光(包含湍流效应)
|
||||||
|
- 红外线
|
||||||
|
- 紫外线
|
||||||
|
- 毫米波
|
||||||
|
可以处理各种天气条件和烟雾环境
|
||||||
|
</remarks>
|
||||||
</member>
|
</member>
|
||||||
<member name="M:AirTransmission.AtmosphericTransmittanceCalculator.CalcLaser(AirTransmission.WeatherCondition,System.Double)">
|
<member name="M:AirTransmission.AtmosphericTransmittanceCalculator.CalcLaser(AirTransmission.WeatherCondition,System.Double)">
|
||||||
<summary>
|
<summary>
|
||||||
@ -96,6 +104,21 @@
|
|||||||
<summary>
|
<summary>
|
||||||
大气湍流模型类,用于计算大气湍流对光传输的影响
|
大气湍流模型类,用于计算大气湍流对光传输的影响
|
||||||
</summary>
|
</summary>
|
||||||
|
<remarks>
|
||||||
|
主要功能:
|
||||||
|
- 计算大气折射率结构常数
|
||||||
|
- 计算湍流引起的光束抖动
|
||||||
|
- 计算闪烁指数
|
||||||
|
- 评估湍流对光传输的综合影响
|
||||||
|
</remarks>
|
||||||
|
</member>
|
||||||
|
<member name="F:AirTransmission.AtmosphericTurbulenceModel.k">
|
||||||
|
<summary>
|
||||||
|
波数常量,单位:m^-1
|
||||||
|
</summary>
|
||||||
|
<remarks>
|
||||||
|
基于1.06微米波长(常用的Nd:YAG激光器波长)计算:k = 2π/λ
|
||||||
|
</remarks>
|
||||||
</member>
|
</member>
|
||||||
<member name="M:AirTransmission.AtmosphericTurbulenceModel.CalculateTurbulenceEffect(System.Double,System.Double,System.Double,System.Double)">
|
<member name="M:AirTransmission.AtmosphericTurbulenceModel.CalculateTurbulenceEffect(System.Double,System.Double,System.Double,System.Double)">
|
||||||
<summary>
|
<summary>
|
||||||
@ -168,37 +191,174 @@
|
|||||||
</member>
|
</member>
|
||||||
<member name="T:AirTransmission.IRTransmittanceModel">
|
<member name="T:AirTransmission.IRTransmittanceModel">
|
||||||
<summary>
|
<summary>
|
||||||
红外线传输模型类,用于计算红外线在大气中的传输特性
|
红外线透过率计算模型,用于计算红外线在大气中的传输特性
|
||||||
</summary>
|
</summary>
|
||||||
|
<remarks>
|
||||||
|
主要功能:
|
||||||
|
- 计算红外线在不同天气条件下的透过率
|
||||||
|
- 使用光谱模型法进行计算
|
||||||
|
- 考虑大气分子吸收(主要是水汽和CO2)
|
||||||
|
- 计算各种天气条件(雨、雪、雾、沙尘)的衰减效应
|
||||||
|
</remarks>
|
||||||
|
</member>
|
||||||
|
<member name="F:AirTransmission.IRTransmittanceModel.MIN_WAVELENGTH">
|
||||||
|
<summary>
|
||||||
|
红外波段最小波长,单位:微米
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="F:AirTransmission.IRTransmittanceModel.MAX_WAVELENGTH">
|
||||||
|
<summary>
|
||||||
|
红外波段最大波长,单位:微米
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="F:AirTransmission.IRTransmittanceModel.SPECTRAL_BANDS">
|
||||||
|
<summary>
|
||||||
|
光谱分段数
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="F:AirTransmission.IRTransmittanceModel.IR_WAVELENGTH">
|
||||||
|
<summary>
|
||||||
|
主要计算波长,单位:微米
|
||||||
|
</summary>
|
||||||
|
<remarks>
|
||||||
|
选择10μm作为主要计算波长,因为这是大气窗口区
|
||||||
|
</remarks>
|
||||||
|
</member>
|
||||||
|
<member name="M:AirTransmission.IRTransmittanceModel.CalculateTransmittance(System.Double)">
|
||||||
|
<summary>
|
||||||
|
计算给定距离的红外线透过率
|
||||||
|
</summary>
|
||||||
|
<param name="distance">传输距离,单位:米</param>
|
||||||
|
<returns>红外线透过率,范围:0-1</returns>
|
||||||
|
<remarks>
|
||||||
|
计算过程:
|
||||||
|
1. 将光谱分为多个波段
|
||||||
|
2. 对每个波段计算衰减
|
||||||
|
3. 考虑天气条件的影响
|
||||||
|
4. 综合得到最终透过率
|
||||||
|
</remarks>
|
||||||
|
</member>
|
||||||
|
<member name="M:AirTransmission.IRTransmittanceModel.CalculateBandAttenuation(System.Double)">
|
||||||
|
<summary>
|
||||||
|
计算特定波长的波段衰减
|
||||||
|
</summary>
|
||||||
|
<param name="wavelength">波长,单位:微米</param>
|
||||||
|
<returns>波段衰减系数,单位:km^-1</returns>
|
||||||
|
<remarks>
|
||||||
|
包含三种衰减机制:
|
||||||
|
- 瑞利散射(Rayleigh散射)
|
||||||
|
- 米氏散射(Mie散射)
|
||||||
|
- 分子吸收
|
||||||
|
</remarks>
|
||||||
|
</member>
|
||||||
|
<member name="M:AirTransmission.IRTransmittanceModel.CalculateRayleighScattering(System.Double)">
|
||||||
|
<summary>
|
||||||
|
计算瑞利散射系数
|
||||||
|
</summary>
|
||||||
|
<param name="wavelength">波长,单位:微米</param>
|
||||||
|
<returns>瑞利散射系数,单位:km^-1</returns>
|
||||||
|
<remarks>
|
||||||
|
使用改进的瑞利散射公式,考虑温度和压力的影响
|
||||||
|
</remarks>
|
||||||
|
</member>
|
||||||
|
<member name="M:AirTransmission.IRTransmittanceModel.CalculateMieScattering(System.Double)">
|
||||||
|
<summary>
|
||||||
|
计算米氏散射系数
|
||||||
|
</summary>
|
||||||
|
<param name="wavelength">波长,单位:微米</param>
|
||||||
|
<returns>米氏散射系数,单位:km^-1</returns>
|
||||||
|
<remarks>
|
||||||
|
基于能见度和气溶胶密度计算米氏散射
|
||||||
|
</remarks>
|
||||||
|
</member>
|
||||||
|
<member name="M:AirTransmission.IRTransmittanceModel.CalculateMolecularAbsorption(System.Double)">
|
||||||
|
<summary>
|
||||||
|
计算分子吸收系数
|
||||||
|
</summary>
|
||||||
|
<param name="wavelength">波长,单位:微米</param>
|
||||||
|
<returns>分子吸收系数,单位:km^-1</returns>
|
||||||
|
<remarks>
|
||||||
|
主要考虑水汽和CO2的吸收
|
||||||
|
</remarks>
|
||||||
|
</member>
|
||||||
|
<member name="M:AirTransmission.IRTransmittanceModel.GetSpectralWeight(System.Double)">
|
||||||
|
<summary>
|
||||||
|
获取特定波长的光谱权重
|
||||||
|
</summary>
|
||||||
|
<param name="wavelength">波长,单位:微米</param>
|
||||||
|
<returns>光谱权重,范围:0-1</returns>
|
||||||
|
<remarks>
|
||||||
|
根据黑体辐射理论计算光谱权重
|
||||||
|
</remarks>
|
||||||
|
</member>
|
||||||
|
<member name="M:AirTransmission.IRTransmittanceModel.CalculateWeatherEffect(System.Double)">
|
||||||
|
<summary>
|
||||||
|
计算天气效应对透过率的影响
|
||||||
|
</summary>
|
||||||
|
<param name="distance">传输距离,单位:米</param>
|
||||||
|
<returns>天气影响因子,范围:0-1</returns>
|
||||||
|
<remarks>
|
||||||
|
综合考虑:
|
||||||
|
- 降水(雨、雪)的影响
|
||||||
|
- 雾的衰减效应
|
||||||
|
- 沙尘的影响
|
||||||
|
</remarks>
|
||||||
</member>
|
</member>
|
||||||
<member name="T:AirTransmission.LaserTransmittanceModel">
|
<member name="T:AirTransmission.LaserTransmittanceModel">
|
||||||
<summary>
|
<summary>
|
||||||
激光传输模型类,用于计算激光在大气中的传输特性
|
激光透过率计算模型,用于计算激光在大气中的传输特性
|
||||||
</summary>
|
</summary>
|
||||||
|
<remarks>
|
||||||
|
主要功能:
|
||||||
|
- 计算激光在不同天气条件下的透过率
|
||||||
|
- 考虑大气湍流效应
|
||||||
|
- 处理烟雾对激光传输的影响
|
||||||
|
- 计算各种天气条件(雨、雪、雾、沙尘)的衰减效应
|
||||||
|
</remarks>
|
||||||
</member>
|
</member>
|
||||||
<member name="M:AirTransmission.LaserTransmittanceModel.#ctor(AirTransmission.WeatherCondition)">
|
<member name="M:AirTransmission.LaserTransmittanceModel.#ctor(AirTransmission.WeatherCondition)">
|
||||||
<summary>
|
<summary>
|
||||||
激光传输模型类,用于计算激光在大气中的传输特性
|
激光透过率计算模型,用于计算激光在大气中的传输特性
|
||||||
</summary>
|
</summary>
|
||||||
|
<remarks>
|
||||||
|
主要功能:
|
||||||
|
- 计算激光在不同天气条件下的透过率
|
||||||
|
- 考虑大气湍流效应
|
||||||
|
- 处理烟雾对激光传输的影响
|
||||||
|
- 计算各种天气条件(雨、雪、雾、沙尘)的衰减效应
|
||||||
|
</remarks>
|
||||||
</member>
|
</member>
|
||||||
<member name="F:AirTransmission.LaserTransmittanceModel.LASER_WAVELENGTH">
|
<member name="F:AirTransmission.LaserTransmittanceModel.LASER_WAVELENGTH">
|
||||||
<summary>
|
<summary>
|
||||||
激光波长(微米)
|
激光波长常量,单位:微米
|
||||||
</summary>
|
</summary>
|
||||||
|
<remarks>
|
||||||
|
默认使用1.06μm波长,对应Nd:YAG激光器的基频输出
|
||||||
|
</remarks>
|
||||||
</member>
|
</member>
|
||||||
<member name="M:AirTransmission.LaserTransmittanceModel.CalculateTransmittance(System.Double)">
|
<member name="M:AirTransmission.LaserTransmittanceModel.CalculateTransmittance(System.Double)">
|
||||||
<summary>
|
<summary>
|
||||||
计算给定距离的激光透过率
|
计算给定距离的激光透过率
|
||||||
</summary>
|
</summary>
|
||||||
<param name="distance">传输距离(米)</param>
|
<param name="distance">传输距离,单位:米</param>
|
||||||
<returns>激光透过率(0到1之间的值)</returns>
|
<returns>激光透过率,范围:0-1</returns>
|
||||||
|
<remarks>
|
||||||
|
计算过程考虑:
|
||||||
|
- 分子散射和吸收
|
||||||
|
- 气溶胶散射
|
||||||
|
- 降水(雨、雪)衰减
|
||||||
|
- 雾和沙尘的影响
|
||||||
|
</remarks>
|
||||||
</member>
|
</member>
|
||||||
<member name="M:AirTransmission.LaserTransmittanceModel.CalculateTransmittanceWithTurbulence(System.Double)">
|
<member name="M:AirTransmission.LaserTransmittanceModel.CalculateTransmittanceWithTurbulence(System.Double)">
|
||||||
<summary>
|
<summary>
|
||||||
计算考虑湍流效应的激光透过率
|
计算考虑湍流效应的激光透过率
|
||||||
</summary>
|
</summary>
|
||||||
<param name="distance">传输距离(米)</param>
|
<param name="distance">传输距离,单位:米</param>
|
||||||
<returns>考虑湍流效应的激光透过率</returns>
|
<returns>考虑湍流效应后的透过率,范围:0-1</returns>
|
||||||
|
<remarks>
|
||||||
|
使用大气湍流模型计算湍流对激光传输的影响
|
||||||
|
</remarks>
|
||||||
</member>
|
</member>
|
||||||
<member name="M:AirTransmission.LaserTransmittanceModel.CalculateRainKCoefficient(System.Double)">
|
<member name="M:AirTransmission.LaserTransmittanceModel.CalculateRainKCoefficient(System.Double)">
|
||||||
<summary>
|
<summary>
|
||||||
@ -272,26 +432,48 @@
|
|||||||
</member>
|
</member>
|
||||||
<member name="T:AirTransmission.MillimeterWaveTransmittanceModel">
|
<member name="T:AirTransmission.MillimeterWaveTransmittanceModel">
|
||||||
<summary>
|
<summary>
|
||||||
毫米波传输模型类,用于计算毫米波在大气中的传输特性
|
毫米波透过率计算模型,用于计算毫米波在大气中的传输特性
|
||||||
</summary>
|
</summary>
|
||||||
|
<remarks>
|
||||||
|
主要功能:
|
||||||
|
- 计算毫米波在不同天气条件下的透过率
|
||||||
|
- 考虑大气分子散射和吸收
|
||||||
|
- 处理水汽和氧气的吸收
|
||||||
|
- 计算各种天气条件(雨、雪、雾、沙尘)的衰减效应
|
||||||
|
</remarks>
|
||||||
</member>
|
</member>
|
||||||
<member name="F:AirTransmission.MillimeterWaveTransmittanceModel.MILLIMETER_WAVE_WAVELENGTH">
|
<member name="F:AirTransmission.MillimeterWaveTransmittanceModel.MILLIMETER_WAVE_WAVELENGTH">
|
||||||
<summary>
|
<summary>
|
||||||
毫米波波长(毫米)
|
毫米波波长常量,单位:毫米
|
||||||
</summary>
|
</summary>
|
||||||
|
<remarks>
|
||||||
|
默认使用3.19mm波长,对应94GHz频率
|
||||||
|
该频率是毫米波雷达常用工作频率
|
||||||
|
</remarks>
|
||||||
</member>
|
</member>
|
||||||
<member name="M:AirTransmission.MillimeterWaveTransmittanceModel.CalculateTransmittance(System.Double)">
|
<member name="M:AirTransmission.MillimeterWaveTransmittanceModel.CalculateTransmittance(System.Double)">
|
||||||
<summary>
|
<summary>
|
||||||
计算给定距离的毫米波透过率
|
计算给定距离的毫米波透过率
|
||||||
</summary>
|
</summary>
|
||||||
<param name="distance">传输距离(米)</param>
|
<param name="distance">传输距离,单位:米</param>
|
||||||
<returns>毫米波透过率(0到1之间的值)</returns>
|
<returns>毫米波透过率,范围:0-1</returns>
|
||||||
|
<remarks>
|
||||||
|
计算过程考虑:
|
||||||
|
- 分子散射和吸收
|
||||||
|
- 水汽吸收
|
||||||
|
- 氧气吸收
|
||||||
|
- 降水(雨、雪)衰减
|
||||||
|
- 雾和沙尘的影响
|
||||||
|
</remarks>
|
||||||
</member>
|
</member>
|
||||||
<member name="M:AirTransmission.MillimeterWaveTransmittanceModel.CalculateMolecularScattering">
|
<member name="M:AirTransmission.MillimeterWaveTransmittanceModel.CalculateMolecularScattering">
|
||||||
<summary>
|
<summary>
|
||||||
计算分子散射系数
|
计算分子散射系数
|
||||||
</summary>
|
</summary>
|
||||||
<returns>分子散射系数(km^-1)</returns>
|
<returns>分子散射系数,单位:km^-1</returns>
|
||||||
|
<remarks>
|
||||||
|
使用修正的瑞利散射公式,考虑温度和压力的影响
|
||||||
|
</remarks>
|
||||||
</member>
|
</member>
|
||||||
<member name="M:AirTransmission.MillimeterWaveTransmittanceModel.CalculateAerosolScattering">
|
<member name="M:AirTransmission.MillimeterWaveTransmittanceModel.CalculateAerosolScattering">
|
||||||
<summary>
|
<summary>
|
||||||
@ -326,38 +508,58 @@
|
|||||||
</member>
|
</member>
|
||||||
<member name="T:AirTransmission.TransmittanceModel">
|
<member name="T:AirTransmission.TransmittanceModel">
|
||||||
<summary>
|
<summary>
|
||||||
大气透过率模型的抽象基类,提供了各种大气条件下的透过率计算方法
|
大气透过率计算的基础模型类,提供了各种大气条件下的透过率计算方法
|
||||||
</summary>
|
</summary>
|
||||||
|
<remarks>
|
||||||
|
包含以下主要衰减机制的计算:
|
||||||
|
- 分子散射和吸收
|
||||||
|
- 气溶胶散射和吸收
|
||||||
|
- 降水(雨、雪)衰减
|
||||||
|
- 沙尘和雾的衰减
|
||||||
|
</remarks>
|
||||||
</member>
|
</member>
|
||||||
<member name="M:AirTransmission.TransmittanceModel.#ctor(AirTransmission.WeatherCondition)">
|
<member name="M:AirTransmission.TransmittanceModel.#ctor(AirTransmission.WeatherCondition)">
|
||||||
<summary>
|
<summary>
|
||||||
大气透过率模型的抽象基类,提供了各种大气条件下的透过率计算方法
|
大气透过率计算的基础模型类,提供了各种大气条件下的透过率计算方法
|
||||||
</summary>
|
</summary>
|
||||||
|
<remarks>
|
||||||
|
包含以下主要衰减机制的计算:
|
||||||
|
- 分子散射和吸收
|
||||||
|
- 气溶胶散射和吸收
|
||||||
|
- 降水(雨、雪)衰减
|
||||||
|
- 沙尘和雾的衰减
|
||||||
|
</remarks>
|
||||||
</member>
|
</member>
|
||||||
<member name="F:AirTransmission.TransmittanceModel.STANDARD_TRANSMITTANCE">
|
<member name="F:AirTransmission.TransmittanceModel.STANDARD_TRANSMITTANCE">
|
||||||
<summary>
|
<summary>
|
||||||
标准大气透过率
|
标准大气透过率常量
|
||||||
</summary>
|
</summary>
|
||||||
|
<remarks>
|
||||||
|
在标准大气条件下(23km能见度,1013.25hPa气压,20℃温度)的透过率值
|
||||||
|
</remarks>
|
||||||
</member>
|
</member>
|
||||||
<member name="F:AirTransmission.TransmittanceModel.STANDARD_VISIBILITY">
|
<member name="F:AirTransmission.TransmittanceModel.STANDARD_VISIBILITY">
|
||||||
<summary>
|
<summary>
|
||||||
标准能见度(公里)
|
标准能见度常量,单位:千米
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="F:AirTransmission.TransmittanceModel.STANDARD_AEROSOL_DENSITY">
|
<member name="F:AirTransmission.TransmittanceModel.STANDARD_AEROSOL_DENSITY">
|
||||||
<summary>
|
<summary>
|
||||||
标准气溶胶密度(粒子/立方厘米)
|
标准气溶胶密度常量,单位:粒子/立方厘米
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="F:AirTransmission.TransmittanceModel.weatherCondition">
|
<member name="F:AirTransmission.TransmittanceModel.weatherCondition">
|
||||||
<summary>
|
<summary>
|
||||||
当前天气条件
|
当前天气条件对象
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="P:AirTransmission.TransmittanceModel.Temperature">
|
<member name="P:AirTransmission.TransmittanceModel.Temperature">
|
||||||
<summary>
|
<summary>
|
||||||
温度(开尔文)
|
温度,单位:开尔文
|
||||||
</summary>
|
</summary>
|
||||||
|
<remarks>
|
||||||
|
由摄氏度转换而来:K = ℃ + 273.15
|
||||||
|
</remarks>
|
||||||
</member>
|
</member>
|
||||||
<member name="P:AirTransmission.TransmittanceModel.Pressure">
|
<member name="P:AirTransmission.TransmittanceModel.Pressure">
|
||||||
<summary>
|
<summary>
|
||||||
@ -487,18 +689,92 @@
|
|||||||
</member>
|
</member>
|
||||||
<member name="T:AirTransmission.UVTransmittanceModel">
|
<member name="T:AirTransmission.UVTransmittanceModel">
|
||||||
<summary>
|
<summary>
|
||||||
紫外线传输模型类,用于计算紫外线在大气中的传输特性
|
紫外线透过率计算模型,用于计算紫外线在大气中的传输特性
|
||||||
</summary>
|
</summary>
|
||||||
|
<remarks>
|
||||||
|
主要功能:
|
||||||
|
- 计算紫外线在不同天气条件下的透过率
|
||||||
|
- 使用光谱模型法进行计算
|
||||||
|
- 考虑臭氧层吸收
|
||||||
|
- 计算各种天气条件(雨、雪、雾、沙尘)的衰减效应
|
||||||
|
</remarks>
|
||||||
|
</member>
|
||||||
|
<member name="F:AirTransmission.UVTransmittanceModel.MIN_WAVELENGTH">
|
||||||
|
<summary>
|
||||||
|
紫外波段最小波长,单位:微米
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="F:AirTransmission.UVTransmittanceModel.MAX_WAVELENGTH">
|
||||||
|
<summary>
|
||||||
|
紫外波段最大波长,单位:微米
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="F:AirTransmission.UVTransmittanceModel.SPECTRAL_BANDS">
|
||||||
|
<summary>
|
||||||
|
光谱分段数
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="F:AirTransmission.UVTransmittanceModel.UV_WAVELENGTH">
|
||||||
|
<summary>
|
||||||
|
主要计算波长,单位:微米
|
||||||
|
</summary>
|
||||||
|
<remarks>
|
||||||
|
选择0.308μm作为主要计算波长,这是XeCl准分子激光器的输出波长
|
||||||
|
</remarks>
|
||||||
|
</member>
|
||||||
|
<member name="M:AirTransmission.UVTransmittanceModel.CalculateTransmittance(System.Double)">
|
||||||
|
<summary>
|
||||||
|
计算给定距离的紫外线透过率
|
||||||
|
</summary>
|
||||||
|
<param name="distance">传输距离,单位:米</param>
|
||||||
|
<returns>紫外线透过率,范围:0-1</returns>
|
||||||
|
<remarks>
|
||||||
|
计算过程:
|
||||||
|
1. 将光谱分为多个波段
|
||||||
|
2. 对每个波段计算衰减
|
||||||
|
3. 考虑天气条件的影响
|
||||||
|
4. 综合得到最终透过率
|
||||||
|
</remarks>
|
||||||
</member>
|
</member>
|
||||||
<member name="T:AirTransmission.WeatherCondition">
|
<member name="T:AirTransmission.WeatherCondition">
|
||||||
<summary>
|
<summary>
|
||||||
天气条件类
|
天气条件类,用于描述大气传输计算所需的天气参数
|
||||||
</summary>
|
</summary>
|
||||||
|
<remarks>
|
||||||
|
包含以下主要天气参数:
|
||||||
|
- 天气类型(晴天、雨天、雪天等)
|
||||||
|
- 温度
|
||||||
|
- 相对湿度
|
||||||
|
- 能见度
|
||||||
|
- 降水量
|
||||||
|
- CO2浓度
|
||||||
|
</remarks>
|
||||||
|
<param name="type">天气类型</param>
|
||||||
|
<param name="temperature">温度(摄氏度)</param>
|
||||||
|
<param name="relativeHumidity">相对湿度(百分比)</param>
|
||||||
|
<param name="visibility">能见度(公里)</param>
|
||||||
|
<param name="precipitation">降水量(毫米/小时),可选</param>
|
||||||
|
<param name="co2Concentration">二氧化碳浓度(ppm),默认415ppm</param>
|
||||||
</member>
|
</member>
|
||||||
<member name="M:AirTransmission.WeatherCondition.#ctor(AirTransmission.WeatherType,System.Double,System.Double,System.Double,System.Nullable{System.Double},System.Double)">
|
<member name="M:AirTransmission.WeatherCondition.#ctor(AirTransmission.WeatherType,System.Double,System.Double,System.Double,System.Nullable{System.Double},System.Double)">
|
||||||
<summary>
|
<summary>
|
||||||
天气条件类
|
天气条件类,用于描述大气传输计算所需的天气参数
|
||||||
</summary>
|
</summary>
|
||||||
|
<remarks>
|
||||||
|
包含以下主要天气参数:
|
||||||
|
- 天气类型(晴天、雨天、雪天等)
|
||||||
|
- 温度
|
||||||
|
- 相对湿度
|
||||||
|
- 能见度
|
||||||
|
- 降水量
|
||||||
|
- CO2浓度
|
||||||
|
</remarks>
|
||||||
|
<param name="type">天气类型</param>
|
||||||
|
<param name="temperature">温度(摄氏度)</param>
|
||||||
|
<param name="relativeHumidity">相对湿度(百分比)</param>
|
||||||
|
<param name="visibility">能见度(公里)</param>
|
||||||
|
<param name="precipitation">降水量(毫米/小时),可选</param>
|
||||||
|
<param name="co2Concentration">二氧化碳浓度(ppm),默认415ppm</param>
|
||||||
</member>
|
</member>
|
||||||
<member name="P:AirTransmission.WeatherCondition.Type">
|
<member name="P:AirTransmission.WeatherCondition.Type">
|
||||||
<summary>
|
<summary>
|
||||||
@ -534,12 +810,41 @@
|
|||||||
<summary>
|
<summary>
|
||||||
打印天气信息
|
打印天气信息
|
||||||
</summary>
|
</summary>
|
||||||
<param name="weather">天气条件</param>
|
<param name="weather">天气条件对象</param>
|
||||||
|
<remarks>
|
||||||
|
输出格式:
|
||||||
|
天气类型: [类型], 温度: [温度]°C, 相对湿度: [湿度]%, 能见度: [能见度]km, 降水量: [降水量]mm/h
|
||||||
|
</remarks>
|
||||||
</member>
|
</member>
|
||||||
<member name="T:AirTransmission.WeatherType">
|
<member name="T:AirTransmission.WeatherType">
|
||||||
<summary>
|
<summary>
|
||||||
天气类型枚举
|
天气类型枚举
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
|
<member name="F:AirTransmission.WeatherType.晴天">
|
||||||
|
<summary>
|
||||||
|
晴朗天气
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="F:AirTransmission.WeatherType.雨天">
|
||||||
|
<summary>
|
||||||
|
雨天
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="F:AirTransmission.WeatherType.雪天">
|
||||||
|
<summary>
|
||||||
|
雪天
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="F:AirTransmission.WeatherType.雾天">
|
||||||
|
<summary>
|
||||||
|
雾天
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="F:AirTransmission.WeatherType.沙尘">
|
||||||
|
<summary>
|
||||||
|
沙尘天气
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
</members>
|
</members>
|
||||||
</doc>
|
</doc>
|
||||||
|
|||||||
@ -7,8 +7,16 @@
|
|||||||
namespace AirTransmission
|
namespace AirTransmission
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 大气透过率计算器
|
/// 大气透过率计算器,提供各种电磁波在大气中传输的透过率计算方法
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// 支持以下电磁波类型的透过率计算:
|
||||||
|
/// - 激光(包含湍流效应)
|
||||||
|
/// - 红外线
|
||||||
|
/// - 紫外线
|
||||||
|
/// - 毫米波
|
||||||
|
/// 可以处理各种天气条件和烟雾环境
|
||||||
|
/// </remarks>
|
||||||
public static class AtmosphericTransmittanceCalculator
|
public static class AtmosphericTransmittanceCalculator
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|||||||
@ -9,9 +9,21 @@ namespace AirTransmission
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// 大气湍流模型类,用于计算大气湍流对光传输的影响
|
/// 大气湍流模型类,用于计算大气湍流对光传输的影响
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// 主要功能:
|
||||||
|
/// - 计算大气折射率结构常数
|
||||||
|
/// - 计算湍流引起的光束抖动
|
||||||
|
/// - 计算闪烁指数
|
||||||
|
/// - 评估湍流对光传输的综合影响
|
||||||
|
/// </remarks>
|
||||||
internal class AtmosphericTurbulenceModel
|
internal class AtmosphericTurbulenceModel
|
||||||
{
|
{
|
||||||
// 波数,假设波长为1.06微米(常用的激光波长)
|
/// <summary>
|
||||||
|
/// 波数常量,单位:m^-1
|
||||||
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// 基于1.06微米波长(常用的Nd:YAG激光器波长)计算:k = 2π/λ
|
||||||
|
/// </remarks>
|
||||||
private const double k = 2 * Math.PI / 1.06e-6;
|
private const double k = 2 * Math.PI / 1.06e-6;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|||||||
@ -7,18 +7,51 @@
|
|||||||
namespace AirTransmission
|
namespace AirTransmission
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 红外线传输模型类,用于计算红外线在大气中的传输特性
|
/// 红外线透过率计算模型,用于计算红外线在大气中的传输特性
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// 主要功能:
|
||||||
|
/// - 计算红外线在不同天气条件下的透过率
|
||||||
|
/// - 使用光谱模型法进行计算
|
||||||
|
/// - 考虑大气分子吸收(主要是水汽和CO2)
|
||||||
|
/// - 计算各种天气条件(雨、雪、雾、沙尘)的衰减效应
|
||||||
|
/// </remarks>
|
||||||
internal class IRTransmittanceModel : TransmittanceModel
|
internal class IRTransmittanceModel : TransmittanceModel
|
||||||
{
|
{
|
||||||
// 光谱分段参数
|
/// <summary>
|
||||||
|
/// 红外波段最小波长,单位:微米
|
||||||
|
/// </summary>
|
||||||
private const double MIN_WAVELENGTH = 3.0; // 红外波段最小波长(微米)
|
private const double MIN_WAVELENGTH = 3.0; // 红外波段最小波长(微米)
|
||||||
|
/// <summary>
|
||||||
|
/// 红外波段最大波长,单位:微米
|
||||||
|
/// </summary>
|
||||||
private const double MAX_WAVELENGTH = 12.0; // 红外波段最大波长(微米)
|
private const double MAX_WAVELENGTH = 12.0; // 红外波段最大波长(微米)
|
||||||
|
/// <summary>
|
||||||
|
/// 光谱分段数
|
||||||
|
/// </summary>
|
||||||
private const int SPECTRAL_BANDS = 100; // 光谱分段数
|
private const int SPECTRAL_BANDS = 100; // 光谱分段数
|
||||||
|
/// <summary>
|
||||||
|
/// 主要计算波长,单位:微米
|
||||||
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// 选择10μm作为主要计算波长,因为这是大气窗口区
|
||||||
|
/// </remarks>
|
||||||
private const double IR_WAVELENGTH = 10.0; // 主要计算波长(微米)
|
private const double IR_WAVELENGTH = 10.0; // 主要计算波长(微米)
|
||||||
|
|
||||||
public IRTransmittanceModel(WeatherCondition weather) : base(weather) { }
|
public IRTransmittanceModel(WeatherCondition weather) : base(weather) { }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 计算给定距离的红外线透过率
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="distance">传输距离,单位:米</param>
|
||||||
|
/// <returns>红外线透过率,范围:0-1</returns>
|
||||||
|
/// <remarks>
|
||||||
|
/// 计算过程:
|
||||||
|
/// 1. 将光谱分为多个波段
|
||||||
|
/// 2. 对每个波段计算衰减
|
||||||
|
/// 3. 考虑天气条件的影响
|
||||||
|
/// 4. 综合得到最终透过率
|
||||||
|
/// </remarks>
|
||||||
public override double CalculateTransmittance(double distance)
|
public override double CalculateTransmittance(double distance)
|
||||||
{
|
{
|
||||||
// 将距离转换为千米
|
// 将距离转换为千米
|
||||||
@ -47,6 +80,17 @@ namespace AirTransmission
|
|||||||
return Math.Max(0, Math.Min(1, finalTransmittance));
|
return Math.Max(0, Math.Min(1, finalTransmittance));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 计算特定波长的波段衰减
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="wavelength">波长,单位:微米</param>
|
||||||
|
/// <returns>波段衰减系数,单位:km^-1</returns>
|
||||||
|
/// <remarks>
|
||||||
|
/// 包含三种衰减机制:
|
||||||
|
/// - 瑞利散射(Rayleigh散射)
|
||||||
|
/// - 米氏散射(Mie散射)
|
||||||
|
/// - 分子吸收
|
||||||
|
/// </remarks>
|
||||||
private double CalculateBandAttenuation(double wavelength)
|
private double CalculateBandAttenuation(double wavelength)
|
||||||
{
|
{
|
||||||
// 进一步增加衰减系数
|
// 进一步增加衰减系数
|
||||||
@ -57,6 +101,14 @@ namespace AirTransmission
|
|||||||
return rayleighScattering + mieScattering + molecularAbsorption;
|
return rayleighScattering + mieScattering + molecularAbsorption;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 计算瑞利散射系数
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="wavelength">波长,单位:微米</param>
|
||||||
|
/// <returns>瑞利散射系数,单位:km^-1</returns>
|
||||||
|
/// <remarks>
|
||||||
|
/// 使用改进的瑞利散射公式,考虑温度和压力的影响
|
||||||
|
/// </remarks>
|
||||||
private double CalculateRayleighScattering(double wavelength)
|
private double CalculateRayleighScattering(double wavelength)
|
||||||
{
|
{
|
||||||
// Rayleigh散射系数计算(km^-1)
|
// Rayleigh散射系数计算(km^-1)
|
||||||
@ -65,6 +117,14 @@ namespace AirTransmission
|
|||||||
return 0.02735 * Math.Pow(wavelengthMicrons, -4.08) * (Pressure / 1013.25) * (288.15 / Temperature);
|
return 0.02735 * Math.Pow(wavelengthMicrons, -4.08) * (Pressure / 1013.25) * (288.15 / Temperature);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 计算米氏散射系数
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="wavelength">波长,单位:微米</param>
|
||||||
|
/// <returns>米氏散射系数,单位:km^-1</returns>
|
||||||
|
/// <remarks>
|
||||||
|
/// 基于能见度和气溶胶密度计算米氏散射
|
||||||
|
/// </remarks>
|
||||||
private double CalculateMieScattering(double wavelength)
|
private double CalculateMieScattering(double wavelength)
|
||||||
{
|
{
|
||||||
// Mie散射系数计算(km^-1)
|
// Mie散射系数计算(km^-1)
|
||||||
@ -74,6 +134,14 @@ namespace AirTransmission
|
|||||||
return beta * alpha * (AerosolDensity / STANDARD_AEROSOL_DENSITY) * 3.5; // 从2.0改为3.5
|
return beta * alpha * (AerosolDensity / STANDARD_AEROSOL_DENSITY) * 3.5; // 从2.0改为3.5
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 计算分子吸收系数
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="wavelength">波长,单位:微米</param>
|
||||||
|
/// <returns>分子吸收系数,单位:km^-1</returns>
|
||||||
|
/// <remarks>
|
||||||
|
/// 主要考虑水汽和CO2的吸收
|
||||||
|
/// </remarks>
|
||||||
private double CalculateMolecularAbsorption(double wavelength)
|
private double CalculateMolecularAbsorption(double wavelength)
|
||||||
{
|
{
|
||||||
// 分子吸收系数计算(km^-1)
|
// 分子吸收系数计算(km^-1)
|
||||||
@ -123,7 +191,15 @@ namespace AirTransmission
|
|||||||
return 0.16 * (CO2Concentration / 400.0); // 从0.08改为0.16
|
return 0.16 * (CO2Concentration / 400.0); // 从0.08改为0.16
|
||||||
}
|
}
|
||||||
|
|
||||||
private double GetSpectralWeight(double wavelength)
|
/// <summary>
|
||||||
|
/// 获取特定波长的光谱权重
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="wavelength">波长,单位:微米</param>
|
||||||
|
/// <returns>光谱权重,范围:0-1</returns>
|
||||||
|
/// <remarks>
|
||||||
|
/// 根据黑体辐射理论计算光谱权重
|
||||||
|
/// </remarks>
|
||||||
|
private static double GetSpectralWeight(double wavelength)
|
||||||
{
|
{
|
||||||
// 调整权重分布
|
// 调整权重分布
|
||||||
if (wavelength >= 3.0 && wavelength <= 5.0)
|
if (wavelength >= 3.0 && wavelength <= 5.0)
|
||||||
@ -134,6 +210,17 @@ namespace AirTransmission
|
|||||||
return 0.2; // 从0.3改为0.2
|
return 0.2; // 从0.3改为0.2
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 计算天气效应对透过率的影响
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="distance">传输距离,单位:米</param>
|
||||||
|
/// <returns>天气影响因子,范围:0-1</returns>
|
||||||
|
/// <remarks>
|
||||||
|
/// 综合考虑:
|
||||||
|
/// - 降水(雨、雪)的影响
|
||||||
|
/// - 雾的衰减效应
|
||||||
|
/// - 沙尘的影响
|
||||||
|
/// </remarks>
|
||||||
private double CalculateWeatherEffect(double distance)
|
private double CalculateWeatherEffect(double distance)
|
||||||
{
|
{
|
||||||
// 降低天气效应的影响
|
// 降低天气效应的影响
|
||||||
|
|||||||
@ -7,20 +7,37 @@
|
|||||||
namespace AirTransmission
|
namespace AirTransmission
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 激光传输模型类,用于计算激光在大气中的传输特性
|
/// 激光透过率计算模型,用于计算激光在大气中的传输特性
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// 主要功能:
|
||||||
|
/// - 计算激光在不同天气条件下的透过率
|
||||||
|
/// - 考虑大气湍流效应
|
||||||
|
/// - 处理烟雾对激光传输的影响
|
||||||
|
/// - 计算各种天气条件(雨、雪、雾、沙尘)的衰减效应
|
||||||
|
/// </remarks>
|
||||||
internal class LaserTransmittanceModel(WeatherCondition weather) : TransmittanceModel(weather)
|
internal class LaserTransmittanceModel(WeatherCondition weather) : TransmittanceModel(weather)
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 激光波长(微米)
|
/// 激光波长常量,单位:微米
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// 默认使用1.06μm波长,对应Nd:YAG激光器的基频输出
|
||||||
|
/// </remarks>
|
||||||
private const double LASER_WAVELENGTH = 1.06;
|
private const double LASER_WAVELENGTH = 1.06;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 计算给定距离的激光透过率
|
/// 计算给定距离的激光透过率
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="distance">传输距离(米)</param>
|
/// <param name="distance">传输距离,单位:米</param>
|
||||||
/// <returns>激光透过率(0到1之间的值)</returns>
|
/// <returns>激光透过率,范围:0-1</returns>
|
||||||
|
/// <remarks>
|
||||||
|
/// 计算过程考虑:
|
||||||
|
/// - 分子散射和吸收
|
||||||
|
/// - 气溶胶散射
|
||||||
|
/// - 降水(雨、雪)衰减
|
||||||
|
/// - 雾和沙尘的影响
|
||||||
|
/// </remarks>
|
||||||
public override double CalculateTransmittance(double distance)
|
public override double CalculateTransmittance(double distance)
|
||||||
{
|
{
|
||||||
double attenuationFactor = CalculateAttenuationFactor();
|
double attenuationFactor = CalculateAttenuationFactor();
|
||||||
@ -41,8 +58,11 @@ namespace AirTransmission
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// 计算考虑湍流效应的激光透过率
|
/// 计算考虑湍流效应的激光透过率
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="distance">传输距离(米)</param>
|
/// <param name="distance">传输距离,单位:米</param>
|
||||||
/// <returns>考虑湍流效应的激光透过率</returns>
|
/// <returns>考虑湍流效应后的透过率,范围:0-1</returns>
|
||||||
|
/// <remarks>
|
||||||
|
/// 使用大气湍流模型计算湍流对激光传输的影响
|
||||||
|
/// </remarks>
|
||||||
public double CalculateTransmittanceWithTurbulence(double distance)
|
public double CalculateTransmittanceWithTurbulence(double distance)
|
||||||
{
|
{
|
||||||
double transmittance = CalculateTransmittance(distance);
|
double transmittance = CalculateTransmittance(distance);
|
||||||
|
|||||||
@ -7,13 +7,24 @@
|
|||||||
namespace AirTransmission
|
namespace AirTransmission
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 毫米波传输模型类,用于计算毫米波在大气中的传输特性
|
/// 毫米波透过率计算模型,用于计算毫米波在大气中的传输特性
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// 主要功能:
|
||||||
|
/// - 计算毫米波在不同天气条件下的透过率
|
||||||
|
/// - 考虑大气分子散射和吸收
|
||||||
|
/// - 处理水汽和氧气的吸收
|
||||||
|
/// - 计算各种天气条件(雨、雪、雾、沙尘)的衰减效应
|
||||||
|
/// </remarks>
|
||||||
internal class MillimeterWaveTransmittanceModel : TransmittanceModel
|
internal class MillimeterWaveTransmittanceModel : TransmittanceModel
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 毫米波波长(毫米)
|
/// 毫米波波长常量,单位:毫米
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// 默认使用3.19mm波长,对应94GHz频率
|
||||||
|
/// 该频率是毫米波雷达常用工作频率
|
||||||
|
/// </remarks>
|
||||||
private const double MILLIMETER_WAVE_WAVELENGTH = 3.19; // 毫米(对应94 GHz)
|
private const double MILLIMETER_WAVE_WAVELENGTH = 3.19; // 毫米(对应94 GHz)
|
||||||
|
|
||||||
public MillimeterWaveTransmittanceModel(WeatherCondition weather) : base(weather) { }
|
public MillimeterWaveTransmittanceModel(WeatherCondition weather) : base(weather) { }
|
||||||
@ -21,8 +32,16 @@ namespace AirTransmission
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// 计算给定距离的毫米波透过率
|
/// 计算给定距离的毫米波透过率
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="distance">传输距离(米)</param>
|
/// <param name="distance">传输距离,单位:米</param>
|
||||||
/// <returns>毫米波透过率(0到1之间的值)</returns>
|
/// <returns>毫米波透过率,范围:0-1</returns>
|
||||||
|
/// <remarks>
|
||||||
|
/// 计算过程考虑:
|
||||||
|
/// - 分子散射和吸收
|
||||||
|
/// - 水汽吸收
|
||||||
|
/// - 氧气吸收
|
||||||
|
/// - 降水(雨、雪)衰减
|
||||||
|
/// - 雾和沙尘的影响
|
||||||
|
/// </remarks>
|
||||||
public override double CalculateTransmittance(double distance)
|
public override double CalculateTransmittance(double distance)
|
||||||
{
|
{
|
||||||
// 计算各种衰减机制
|
// 计算各种衰减机制
|
||||||
@ -49,7 +68,10 @@ namespace AirTransmission
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// 计算分子散射系数
|
/// 计算分子散射系数
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <returns>分子散射系数(km^-1)</returns>
|
/// <returns>分子散射系数,单位:km^-1</returns>
|
||||||
|
/// <remarks>
|
||||||
|
/// 使用修正的瑞利散射公式,考虑温度和压力的影响
|
||||||
|
/// </remarks>
|
||||||
private double CalculateMolecularScattering()
|
private double CalculateMolecularScattering()
|
||||||
{
|
{
|
||||||
// 分子散射系数计算(km^-1)
|
// 分子散射系数计算(km^-1)
|
||||||
|
|||||||
@ -7,33 +7,44 @@
|
|||||||
namespace AirTransmission
|
namespace AirTransmission
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 大气透过率模型的抽象基类,提供了各种大气条件下的透过率计算方法
|
/// 大气透过率计算的基础模型类,提供了各种大气条件下的透过率计算方法
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// 包含以下主要衰减机制的计算:
|
||||||
|
/// - 分子散射和吸收
|
||||||
|
/// - 气溶胶散射和吸收
|
||||||
|
/// - 降水(雨、雪)衰减
|
||||||
|
/// - 沙尘和雾的衰减
|
||||||
|
/// </remarks>
|
||||||
internal abstract class TransmittanceModel(WeatherCondition weather)
|
internal abstract class TransmittanceModel(WeatherCondition weather)
|
||||||
{
|
{
|
||||||
// 常量
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 标准大气透过率
|
/// 标准大气透过率常量
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// 在标准大气条件下(23km能见度,1013.25hPa气压,20℃温度)的透过率值
|
||||||
|
/// </remarks>
|
||||||
protected const double STANDARD_TRANSMITTANCE = 0.975; // 标准大气透过率
|
protected const double STANDARD_TRANSMITTANCE = 0.975; // 标准大气透过率
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 标准能见度(公里)
|
/// 标准能见度常量,单位:千米
|
||||||
/// </summary>
|
/// </summary>
|
||||||
protected const double STANDARD_VISIBILITY = 23.0; // 标准能见度 (km)
|
protected const double STANDARD_VISIBILITY = 23.0; // 标准能见度 (km)
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 标准气溶胶密度(粒子/立方厘米)
|
/// 标准气溶胶密度常量,单位:粒子/立方厘米
|
||||||
/// </summary>
|
/// </summary>
|
||||||
protected const double STANDARD_AEROSOL_DENSITY = 100.0; // 标准气溶胶密度 (particles/cm³)
|
protected const double STANDARD_AEROSOL_DENSITY = 100.0; // 标准气溶胶密度 (particles/cm³)
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 当前天气条件
|
/// 当前天气条件对象
|
||||||
/// </summary>
|
/// </summary>
|
||||||
protected WeatherCondition weatherCondition = weather;
|
protected WeatherCondition weatherCondition = weather;
|
||||||
// 大气模型参数
|
// 大气模型参数
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 温度(开尔文)
|
/// 温度,单位:开尔文
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// 由摄氏度转换而来:K = ℃ + 273.15
|
||||||
|
/// </remarks>
|
||||||
protected double Temperature { get; set; } = weather.Temperature + 273.15;
|
protected double Temperature { get; set; } = weather.Temperature + 273.15;
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 大气压力(百帕)
|
/// 大气压力(百帕)
|
||||||
|
|||||||
@ -7,18 +7,54 @@
|
|||||||
namespace AirTransmission
|
namespace AirTransmission
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 紫外线传输模型类,用于计算紫外线在大气中的传输特性
|
/// 紫外线透过率计算模型,用于计算紫外线在大气中的传输特性
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// 主要功能:
|
||||||
|
/// - 计算紫外线在不同天气条件下的透过率
|
||||||
|
/// - 使用光谱模型法进行计算
|
||||||
|
/// - 考虑臭氧层吸收
|
||||||
|
/// - 计算各种天气条件(雨、雪、雾、沙尘)的衰减效应
|
||||||
|
/// </remarks>
|
||||||
internal class UVTransmittanceModel : TransmittanceModel
|
internal class UVTransmittanceModel : TransmittanceModel
|
||||||
{
|
{
|
||||||
// 光谱分段参数
|
/// <summary>
|
||||||
|
/// 紫外波段最小波长,单位:微米
|
||||||
|
/// </summary>
|
||||||
private const double MIN_WAVELENGTH = 0.2; // 紫外波段最小波长(微米)
|
private const double MIN_WAVELENGTH = 0.2; // 紫外波段最小波长(微米)
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 紫外波段最大波长,单位:微米
|
||||||
|
/// </summary>
|
||||||
private const double MAX_WAVELENGTH = 0.4; // 紫外波段最大波长(微米)
|
private const double MAX_WAVELENGTH = 0.4; // 紫外波段最大波长(微米)
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 光谱分段数
|
||||||
|
/// </summary>
|
||||||
private const int SPECTRAL_BANDS = 100; // 光谱分段数
|
private const int SPECTRAL_BANDS = 100; // 光谱分段数
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 主要计算波长,单位:微米
|
||||||
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// 选择0.308μm作为主要计算波长,这是XeCl准分子激光器的输出波长
|
||||||
|
/// </remarks>
|
||||||
private const double UV_WAVELENGTH = 0.308; // 主要计算波长(微米)
|
private const double UV_WAVELENGTH = 0.308; // 主要计算波长(微米)
|
||||||
|
|
||||||
public UVTransmittanceModel(WeatherCondition weather) : base(weather) { }
|
public UVTransmittanceModel(WeatherCondition weather) : base(weather) { }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 计算给定距离的紫外线透过率
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="distance">传输距离,单位:米</param>
|
||||||
|
/// <returns>紫外线透过率,范围:0-1</returns>
|
||||||
|
/// <remarks>
|
||||||
|
/// 计算过程:
|
||||||
|
/// 1. 将光谱分为多个波段
|
||||||
|
/// 2. 对每个波段计算衰减
|
||||||
|
/// 3. 考虑天气条件的影响
|
||||||
|
/// 4. 综合得到最终透过率
|
||||||
|
/// </remarks>
|
||||||
public override double CalculateTransmittance(double distance)
|
public override double CalculateTransmittance(double distance)
|
||||||
{
|
{
|
||||||
// 将距离转换为千米
|
// 将距离转换为千米
|
||||||
|
|||||||
@ -3,8 +3,23 @@ using System;
|
|||||||
namespace AirTransmission
|
namespace AirTransmission
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 天气条件类
|
/// 天气条件类,用于描述大气传输计算所需的天气参数
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// 包含以下主要天气参数:
|
||||||
|
/// - 天气类型(晴天、雨天、雪天等)
|
||||||
|
/// - 温度
|
||||||
|
/// - 相对湿度
|
||||||
|
/// - 能见度
|
||||||
|
/// - 降水量
|
||||||
|
/// - CO2浓度
|
||||||
|
/// </remarks>
|
||||||
|
/// <param name="type">天气类型</param>
|
||||||
|
/// <param name="temperature">温度(摄氏度)</param>
|
||||||
|
/// <param name="relativeHumidity">相对湿度(百分比)</param>
|
||||||
|
/// <param name="visibility">能见度(公里)</param>
|
||||||
|
/// <param name="precipitation">降水量(毫米/小时),可选</param>
|
||||||
|
/// <param name="co2Concentration">二氧化碳浓度(ppm),默认415ppm</param>
|
||||||
public class WeatherCondition(WeatherType type, double temperature, double relativeHumidity, double visibility, double? precipitation = null, double co2Concentration = 415)
|
public class WeatherCondition(WeatherType type, double temperature, double relativeHumidity, double visibility, double? precipitation = null, double co2Concentration = 415)
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@ -35,7 +50,11 @@ namespace AirTransmission
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// 打印天气信息
|
/// 打印天气信息
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="weather">天气条件</param>
|
/// <param name="weather">天气条件对象</param>
|
||||||
|
/// <remarks>
|
||||||
|
/// 输出格式:
|
||||||
|
/// 天气类型: [类型], 温度: [温度]°C, 相对湿度: [湿度]%, 能见度: [能见度]km, 降水量: [降水量]mm/h
|
||||||
|
/// </remarks>
|
||||||
public static void PrintWeatherInfo(WeatherCondition weather){
|
public static void PrintWeatherInfo(WeatherCondition weather){
|
||||||
Console.WriteLine($"---天气类型: {weather.Type}, 温度: {weather.Temperature}°C, 相对湿度: {weather.RelativeHumidity}%, 能见度: {weather.Visibility}km, 降水量: {weather.Precipitation ?? 0}mm/h");
|
Console.WriteLine($"---天气类型: {weather.Type}, 温度: {weather.Temperature}°C, 相对湿度: {weather.RelativeHumidity}%, 能见度: {weather.Visibility}km, 降水量: {weather.Precipitation ?? 0}mm/h");
|
||||||
}
|
}
|
||||||
@ -46,10 +65,25 @@ namespace AirTransmission
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public enum WeatherType
|
public enum WeatherType
|
||||||
{
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 晴朗天气
|
||||||
|
/// </summary>
|
||||||
晴天, // 晴朗天气
|
晴天, // 晴朗天气
|
||||||
|
/// <summary>
|
||||||
|
/// 雨天
|
||||||
|
/// </summary>
|
||||||
雨天, // 雨天
|
雨天, // 雨天
|
||||||
|
/// <summary>
|
||||||
|
/// 雪天
|
||||||
|
/// </summary>
|
||||||
雪天, // 雪天
|
雪天, // 雪天
|
||||||
|
/// <summary>
|
||||||
|
/// 雾天
|
||||||
|
/// </summary>
|
||||||
雾天, // 雾天
|
雾天, // 雾天
|
||||||
|
/// <summary>
|
||||||
|
/// 沙尘天气
|
||||||
|
/// </summary>
|
||||||
沙尘 // 沙尘
|
沙尘 // 沙尘
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1,9 +1,4 @@
|
|||||||
/*
|
using AirTransmission;
|
||||||
* 版本历史:
|
|
||||||
* 1.0.0 (2024-10-13): 初始版本,实现基本的大气透过率计算和测试功能。作者:田建勇
|
|
||||||
*/
|
|
||||||
|
|
||||||
using AirTransmission;
|
|
||||||
|
|
||||||
class Program
|
class Program
|
||||||
{
|
{
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user