rtsos 1.1.0rc1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (109) hide show
  1. rtsos-1.1.0rc1/.gitignore +5 -0
  2. rtsos-1.1.0rc1/CMakeLists.txt +41 -0
  3. rtsos-1.1.0rc1/Documentation/Describtion_of_input_files/SOS_io.pdf +0 -0
  4. rtsos-1.1.0rc1/Documentation/Describtion_of_input_files/SOS_io.tex +271 -0
  5. rtsos-1.1.0rc1/LICENSE +40 -0
  6. rtsos-1.1.0rc1/PKG-INFO +43 -0
  7. rtsos-1.1.0rc1/README-temp.md +22 -0
  8. rtsos-1.1.0rc1/README.md +212 -0
  9. rtsos-1.1.0rc1/compile/Makefile +80 -0
  10. rtsos-1.1.0rc1/compile/makefile_GSFC_AC_LUT +79 -0
  11. rtsos-1.1.0rc1/compile/makefile_PACE_Simulator_DoubleK +143 -0
  12. rtsos-1.1.0rc1/compile/makefile_aerosol_phmx_cal +51 -0
  13. rtsos-1.1.0rc1/pyproject.toml +56 -0
  14. rtsos-1.1.0rc1/src/CMakeLists.txt +63 -0
  15. rtsos-1.1.0rc1/src/ac_aerosols_lut/main_GSFC_AC_LUT.f90 +2841 -0
  16. rtsos-1.1.0rc1/src/aerosol_phasematrix_preparation/CMakeLists.txt +8 -0
  17. rtsos-1.1.0rc1/src/aerosol_phasematrix_preparation/Mie_PHMX_Cal.f90 +2344 -0
  18. rtsos-1.1.0rc1/src/aerosol_phasematrix_preparation/main_aerosol_phmx_cal.f90 +1031 -0
  19. rtsos-1.1.0rc1/src/aerosol_phasematrix_preparation/read_dust_data.f90 +697 -0
  20. rtsos-1.1.0rc1/src/core/Atmosphere_Profile.f90 +364 -0
  21. rtsos-1.1.0rc1/src/core/CMakeLists.txt +26 -0
  22. rtsos-1.1.0rc1/src/core/Gas_Absorption_CS_Readin.f90 +1421 -0
  23. rtsos-1.1.0rc1/src/core/RossLiBRDF.f90 +296 -0
  24. rtsos-1.1.0rc1/src/core/Save_Ocean_Rad.f90 +650 -0
  25. rtsos-1.1.0rc1/src/core/SnowBRDF.f90 +372 -0
  26. rtsos-1.1.0rc1/src/core/WV_LBL_GRID.f90 +58 -0
  27. rtsos-1.1.0rc1/src/core/aerosol_microphysical_model.f90 +893 -0
  28. rtsos-1.1.0rc1/src/core/bessel.f +4960 -0
  29. rtsos-1.1.0rc1/src/core/bfit.f90 +776 -0
  30. rtsos-1.1.0rc1/src/core/deltafit.f90 +323 -0
  31. rtsos-1.1.0rc1/src/core/emis_sea.f90 +348 -0
  32. rtsos-1.1.0rc1/src/core/hdf5_utils.f90 +267 -0
  33. rtsos-1.1.0rc1/src/core/mathlib.f90 +785 -0
  34. rtsos-1.1.0rc1/src/core/refwat1.f +1289 -0
  35. rtsos-1.1.0rc1/src/core/rt_single_scattering.f90 +706 -0
  36. rtsos-1.1.0rc1/src/core/rtsos_rao_dg.f90 +9565 -0
  37. rtsos-1.1.0rc1/src/core/rtspecfunc.f90 +2594 -0
  38. rtsos-1.1.0rc1/src/core/rttype_sos_rao_dg.f90 +614 -0
  39. rtsos-1.1.0rc1/src/core/spher.f +1022 -0
  40. rtsos-1.1.0rc1/src/core/surface_glint.f90 +39 -0
  41. rtsos-1.1.0rc1/src/main_program_monochromatic/main.f90 +388 -0
  42. rtsos-1.1.0rc1/src/pace_simulator/CMakeLists.txt +9 -0
  43. rtsos-1.1.0rc1/src/pace_simulator/MAP_Instrument.f90 +20 -0
  44. rtsos-1.1.0rc1/src/pace_simulator/PACE_Instrument.f90 +431 -0
  45. rtsos-1.1.0rc1/src/pace_simulator/PACE_MIE_PHMX_Init.f90 +1011 -0
  46. rtsos-1.1.0rc1/src/pace_simulator/main_PACE_Simulator_DoubleK.f90 +5458 -0
  47. rtsos-1.1.0rc1/src/rtsos/.gitignore +1 -0
  48. rtsos-1.1.0rc1/src/rtsos/__init__.py +0 -0
  49. rtsos-1.1.0rc1/src/rtsos/_version.py +24 -0
  50. rtsos-1.1.0rc1/src/rtsos/core.py +297 -0
  51. rtsos-1.1.0rc1/src/rtsos/parameters.py +911 -0
  52. rtsos-1.1.0rc1/src/rtsos/rt_AC_LUT.py +157 -0
  53. rtsos-1.1.0rc1/src/rtsos/rt_PACE.py +94 -0
  54. rtsos-1.1.0rc1/src/rtsos/rt_PHMX.py +157 -0
  55. rtsos-1.1.0rc1/src/rtsos/tests/.gitignore +3 -0
  56. rtsos-1.1.0rc1/src/rtsos/tests/.pytest.toml +0 -0
  57. rtsos-1.1.0rc1/src/rtsos/tests/conftest.py +31 -0
  58. rtsos-1.1.0rc1/src/rtsos/tests/test_AC_LUT.py +130 -0
  59. rtsos-1.1.0rc1/src/rtsos/tests/test_PACE.py +142 -0
  60. rtsos-1.1.0rc1/src/rtsos/tests/test_PHMX.py +11 -0
  61. rtsos-1.1.0rc1/test/PACE_Simulator/python_script/Aerosol_PhaseMatrix_Cal_InputPre.py +243 -0
  62. rtsos-1.1.0rc1/test/PACE_Simulator/python_script/pace_simulator_twolayer_inputfile_land.py +252 -0
  63. rtsos-1.1.0rc1/test/PACE_Simulator/python_script/pace_simulator_twolayer_inputfile_ocean.py +233 -0
  64. rtsos-1.1.0rc1/test/PACE_Simulator/python_script/synthetic_Holton_sequence_inputfiles.py +241 -0
  65. rtsos-1.1.0rc1/test/monochromatic/RayDepol0.pmtx +722 -0
  66. rtsos-1.1.0rc1/test/monochromatic/auxiliary_directory +3 -0
  67. rtsos-1.1.0rc1/test/monochromatic/sosi.amu +50 -0
  68. rtsos-1.1.0rc1/test/monochromatic/sosi.example +58 -0
  69. rtsos-1.1.0rc1/test/monochromatic/sosi.lamb +60 -0
  70. rtsos-1.1.0rc1/test/monochromatic/sosi.pBRDF.lamb +51 -0
  71. rtsos-1.1.0rc1/test/monochromatic/sosi.snow +49 -0
  72. rtsos-1.1.0rc1/test/monochromatic/vSOS.lamb +204 -0
  73. rtsos-1.1.0rc1/test/monochromatic/vSOS.pBRDF_lamb +204 -0
  74. rtsos-1.1.0rc1/test/monochromatic/vSOS.snow +204 -0
  75. rtsos-1.1.0rc1/test/monochromatic/vSOS_example +398 -0
  76. rtsos-1.1.0rc1/uv.lock +578 -0
  77. rtsos-1.1.0rc1/validation/benchmark/Coulson_thick/Mol_Comp_vsCoul.xls +0 -0
  78. rtsos-1.1.0rc1/validation/benchmark/Coulson_thick/auxiliary_directory +1 -0
  79. rtsos-1.1.0rc1/validation/benchmark/Coulson_thick/ray.pmtx +1449 -0
  80. rtsos-1.1.0rc1/validation/benchmark/Coulson_thick/sos_verified +928 -0
  81. rtsos-1.1.0rc1/validation/benchmark/Coulson_thick/sosi.amu +118 -0
  82. rtsos-1.1.0rc1/validation/benchmark/Coulson_thick/sosi.dat +41 -0
  83. rtsos-1.1.0rc1/validation/benchmark/Kokhanovsky_case/no_Ocean/Kok_data/SCIATRAN_BENCHMARK_RESULTS/Rayleigh_refl_N_60.dat +90 -0
  84. rtsos-1.1.0rc1/validation/benchmark/Kokhanovsky_case/no_Ocean/Kok_data/SCIATRAN_BENCHMARK_RESULTS/Rayleigh_trans_N_60.dat +90 -0
  85. rtsos-1.1.0rc1/validation/benchmark/Kokhanovsky_case/no_Ocean/Kok_data/SCIATRAN_BENCHMARK_RESULTS/aerosol_refl_N_240.dat +90 -0
  86. rtsos-1.1.0rc1/validation/benchmark/Kokhanovsky_case/no_Ocean/Kok_data/SCIATRAN_BENCHMARK_RESULTS/aerosol_trans_N_240.txt +90 -0
  87. rtsos-1.1.0rc1/validation/benchmark/Kokhanovsky_case/no_Ocean/Kok_data/SCIATRAN_BENCHMARK_RESULTS/cloud_refl_N_360.dat +90 -0
  88. rtsos-1.1.0rc1/validation/benchmark/Kokhanovsky_case/no_Ocean/Kok_data/SCIATRAN_BENCHMARK_RESULTS/cloud_trans_N_360.dat +90 -0
  89. rtsos-1.1.0rc1/validation/benchmark/Kokhanovsky_case/no_Ocean/MC_AEROSOL_BOA +1102 -0
  90. rtsos-1.1.0rc1/validation/benchmark/Kokhanovsky_case/no_Ocean/MC_AEROSOL_TOA +1101 -0
  91. rtsos-1.1.0rc1/validation/benchmark/Kokhanovsky_case/no_Ocean/auxiliary_directory +2 -0
  92. rtsos-1.1.0rc1/validation/benchmark/Kokhanovsky_case/no_Ocean/lognormalAA0p3BB0p8464.pmtx +1449 -0
  93. rtsos-1.1.0rc1/validation/benchmark/Kokhanovsky_case/no_Ocean/radplot_Kok.m +387 -0
  94. rtsos-1.1.0rc1/validation/benchmark/Kokhanovsky_case/no_Ocean/sosi.amu +188 -0
  95. rtsos-1.1.0rc1/validation/benchmark/Kokhanovsky_case/no_Ocean/sosi.dat +65 -0
  96. rtsos-1.1.0rc1/validation/benchmark/flat_ocean_Ray_MC/Atmos_OI_O/MCRAY_W0_wO_BOA +145 -0
  97. rtsos-1.1.0rc1/validation/benchmark/flat_ocean_Ray_MC/Atmos_OI_O/MCRAY_W0_wO_BOO +145 -0
  98. rtsos-1.1.0rc1/validation/benchmark/flat_ocean_Ray_MC/Atmos_OI_O/MCRAY_W0_wO_TOA +145 -0
  99. rtsos-1.1.0rc1/validation/benchmark/flat_ocean_Ray_MC/Atmos_OI_O/MCRAY_W0_wO_TOO +145 -0
  100. rtsos-1.1.0rc1/validation/benchmark/flat_ocean_Ray_MC/Atmos_OI_O/auxiliary_directory +2 -0
  101. rtsos-1.1.0rc1/validation/benchmark/flat_ocean_Ray_MC/Atmos_OI_O/radplot_L60.m +436 -0
  102. rtsos-1.1.0rc1/validation/benchmark/flat_ocean_Ray_MC/Atmos_OI_O/sosi.amu +101 -0
  103. rtsos-1.1.0rc1/validation/benchmark/flat_ocean_Ray_MC/Atmos_OI_O/sosi.dat +46 -0
  104. rtsos-1.1.0rc1/validation/benchmark/flat_ocean_Ray_MC/Atmos_OI_O/vSOS_verified +278 -0
  105. rtsos-1.1.0rc1/validation/benchmark/thermal_source/auxiliary_directory +2 -0
  106. rtsos-1.1.0rc1/validation/benchmark/thermal_source/rad_ray_fres_plot.m +74 -0
  107. rtsos-1.1.0rc1/validation/benchmark/thermal_source/sosi_ray_fres.dat +56 -0
  108. rtsos-1.1.0rc1/validation/benchmark/thermal_source/test_mw_fres.dat +140 -0
  109. rtsos-1.1.0rc1/validation/benchmark/thermal_source/vSOS_ray_fres +51 -0
@@ -0,0 +1,5 @@
1
+ shellscripts/
2
+ __pycache__
3
+ .DS_Store
4
+ /build
5
+ /dist
@@ -0,0 +1,41 @@
1
+ cmake_minimum_required(VERSION 3.22...3.31)
2
+
3
+ if(DEFINED SKBUILD_PROJECT_NAME)
4
+ set(_PROJECT "${SKBUILD_PROJECT_NAME}")
5
+ else()
6
+ set(_PROJECT "RTSOS")
7
+ endif()
8
+ project(${_PROJECT}
9
+ LANGUAGES
10
+ C
11
+ CXX
12
+ Fortran
13
+ )
14
+ include(GNUInstallDirs)
15
+
16
+ # ensure RPATH is defined for relocatable binaries
17
+ set(CMAKE_INSTALL_RPATH "$ORIGIN/../lib")
18
+ set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
19
+
20
+ # for Conda environment installation with cmake
21
+ if(DEFINED ENV{CONDA_PREFIX})
22
+ message(STATUS "Building with conda environment: $ENV{CONDA_PREFIX}")
23
+ list(APPEND CMAKE_PREFIX_PATH "$ENV{CONDA_PREFIX}")
24
+ set(CMAKE_INSTALL_PREFIX "$ENV{CONDA_PREFIX}" CACHE PATH "Default install prefix for Conda environment" FORCE)
25
+ endif()
26
+
27
+ # import targets that satisfy the HDF5 dependency
28
+ find_package(HDF5
29
+ REQUIRED
30
+ COMPONENTS
31
+ Fortran
32
+ HL
33
+ )
34
+
35
+ # import targets that satisfy the Lapack dependency (includes BLAS)
36
+ find_package(LAPACK
37
+ REQUIRED
38
+ )
39
+
40
+ # recurse into source tree
41
+ add_subdirectory(src)
@@ -0,0 +1,271 @@
1
+ %%%%%%%%%%%%%%%%%%%%%%% preamble %%%%%%%%%%%%%%%%%%%%%%%%%%%
2
+ \documentclass[10pt,letterpaper]{article}
3
+ \usepackage{amsmath}
4
+ \usepackage{subfigure}
5
+
6
+ %%%%%%%%%%%%%%%%%% title page information %%%%%%%%%%%%%%%%%%
7
+ \title{Input and Output Files of the RTSOS Code}
8
+
9
+ \author{Pengwang Zhai \\ Physics Department, UMBC \\ pwzhai@gmail.com}
10
+
11
+ %%%%%%%%%%%%%%%%%%%%%%% begin %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
12
+ \begin{document}
13
+
14
+ \maketitle
15
+ %%%%%%%%%%%%%%%%%%% abstract and OCIS codes %%%%%%%%%%%%%%%%
16
+ %% [use \begin{abstract*}...\end{abstract*} if exempt from copyright]
17
+
18
+ \begin{abstract}
19
+ The input and output files of the RTSOS code are described this file
20
+ \end{abstract}
21
+
22
+
23
+ \section{Files contained in the package}
24
+ In the main directory, there are a few key directories, including \verb"SOSDIR/SOS_Callable/src/", \verb"SOSDIR/SOS_Callable/compile/", and \verb"SOSDIR/SOS_Callable/test/". The string \verb"SOSDIR" is the directory where the radiative transfer package is in. The src directory including all the source code, the compile directory contains the Makefiles, and the test directory are intent to be used as running programs. The basis of all package is \verb"rtsos_rao_dg.f90", which performs monochromatic radiative transfer simulations. All inelastic scattering builds upon that.
25
+
26
+ \section{Input files of monochromatic simulation}
27
+ The input files are: \verb"sosi.amu", \verb"sosi.dat", and the Mie input files for each medium. To run the monochromatic radiative transfer simulation, do the following:
28
+
29
+ \begin{verbatim}
30
+ cd SOSDIR/compile
31
+ make
32
+ cp rtsos_rao_dg.exe ../test/monochromatic/
33
+ cd ../test/monochromatic/
34
+ rtsos_rao_dg.exe inputfile outputfile
35
+ \end{verbatim}
36
+
37
+ \noindent where inputfile is a copy of sosi.dat explained in this document and outputfile is the file name for the output file.
38
+
39
+ \section{Angle file}
40
+ \verb"sosi.amu" specifies the angle related quantities used by the RTSOS code. An example of the file is:
41
+
42
+ \begin{verbatim}
43
+ 1
44
+ 120
45
+ 10 4
46
+ 0.0
47
+ 20.
48
+ 40.
49
+ 60.
50
+ 80.
51
+ 100.
52
+ 120.
53
+ 140.
54
+ 160.
55
+ 180.
56
+ 0
57
+ 60.
58
+ 120.
59
+ 180
60
+ \end{verbatim}
61
+
62
+ The first line is the number $N_{st}$ of $\theta_{s}$ angles for the solar incident radiation. The second line to the ${(2+N_{st}-1)}^{th}$ line specify the incident solar angles $\theta_{s}$ at which the radiation calculation is needed. Each line contains one solar $\theta_{s}$ angle only, with the unit of degrees. In the example, thetas=120 deg. After the solar zenith angle, following line has two numbers: they are the number of viewing zenith and azimuth angles, respectively. In the example, the number of viewing zenith angle is Nzv=10 and the number of azimuthal angle is Nphi=4. Following the number will be Nzv lines which specify the viewing zenith angles. After viewing zenith angle, it will be Nphi lines which specify a set of azimuthal angles. In the example, the RTSOS code will calculate a set of viewing zenith angle of 0, 20, ..., 180. The viewing azimuthal angles are 0, 60, 120 and 180.
63
+
64
+ \section{Input file sosi.dat}
65
+ \verb"sosi.dat" specifies the system configuration. Table \ref{tab:sosi} is an example input file.
66
+ \begin{table}
67
+ \caption{Example input file sosi.dat}
68
+ \vspace{0.2 in}
69
+ \centering
70
+ \begin{tabular}{llllllll}
71
+ &-1000 & 0.0 & 0.0 & 0.0 & 0.0 & 0.0 & 0.0 \\
72
+ &1 & 0.1 & 1.0 & 412.0& 215.0 & 0.0 & 0.0 \\
73
+ &-1000 & 0.0 & 0.0 & 0.0 & 0.0 & 0.0 & 0.0 \\
74
+ &-100 & 7.0 & 1.34 & 0.0 & 0.0 & 0.0 & 0.0 \\
75
+ &-1000 & 0.0 & 0.0 & 0.0 & 0.0 & 0.0 & 0.0 \\
76
+ &2 & 0.1 & 1.0 & 412.0& 215.0 & 0.0 & 0.0 \\
77
+ &-1000 & 0.0 & 0.0 & 0.0 & 0.0 & 0.0 & 0.0 \\
78
+ &-200 & 1.0 & 1.0 & 1.5 & 0.0 & 0.0 & 0.0 \\
79
+ &40 & 30 & 60 & & & & \\
80
+ &2 & 30 & 10 & & & & \\
81
+ &RayDepol0.pmtx & & & & & & \\
82
+ &gamma\_aa\_0.03bb\_0.33wv0.35.pmtx & & & & & & \\
83
+ \end{tabular}
84
+ \label{tab:sosi}
85
+ \end{table}
86
+
87
+ There are 12 lines in the example input file. From the first line to 9th line, each line contains 7 numbers. The first number is called IPT in the code, which tells what this line is (detector, medium, surface, etc.). There are four types of objects you can specify through IPT: Detector, Atmosphere or Ocean scattering layers, Ocean interface, and the Lambertian/(polarized BRDF) bottom. Table \ref{tab:IPT} shows the meanings of different IPT values:
88
+
89
+ \begin{table}
90
+ \caption{IPT and its meaning}
91
+ \vspace{0.2 in}
92
+ \centering
93
+ \begin{tabular}{ll}
94
+ IPT=-1000 & Detector \\
95
+ IPT=-100 & Ocean interface\\
96
+ IPT=-101 & Ocean interface as the lower bottom (no ocean medium)\\
97
+ IPT=-102 & Water interface bottom in infrared \\
98
+ IPT=-200 & Lambertian/flat surface mixed reflection bottom \\
99
+ IPT=-201 & polarized reflection bottom \\
100
+ IPT=-202 & snow surface \\
101
+ IPT=-203 & Ross-Li surface model \\
102
+ IPT=$>$0 & Atmosphere or Ocean scattering medium
103
+ \end{tabular}
104
+ \label{tab:IPT}
105
+ \end{table}
106
+
107
+ In this input file, a default coordinate system has been assumed. The first Atmosphere scattering medium is located at the top of the atmosphere.
108
+ The scattering medium line to the line of IPT=-100 (or -200, or -201, etc.) specify the atmosphere configuration.
109
+ The line just after the line of IPT=-100 to the line of IPT=-200 configure the oceanic medium.
110
+ IPT=-200 means a mixture of Lambertian and flat reflecting surface.
111
+ No more atmosphere and ocean medium configuration is allowed beyond the line of IPT=-200 (-101, or -201) because no medium is beyond the bottom.
112
+
113
+ \begin{table}
114
+ \caption{Inputfile fields}
115
+ \vspace{0.2 in}
116
+ \centering
117
+ \begin{tabular}{llllllll}
118
+ &IPT=-1000 & BN&BN&BN& BN&BN&BN \\
119
+ &IPT $>$ 0 &TAU&LBDOM&wavelength&Temperature&EFLRSC&ALH \\
120
+ &IPT=-101 & windspeed & re(mwater) & im(mwater) & glintflag & RSR0P & FWC \\
121
+ &IPT=-100 & windspeed & re(mwater) & im(mwater) & glintflag,& RSR0P & FWC \\
122
+ &IPT=-102 & windspeed& re(mwater)& im(mwater)&glintflag&temperature&emissivity \\
123
+ &IPT=-200 & albedo &flam&re(mbottom)&im(mbottom)&temperature&emissivity \\
124
+ &IPT=-201 & pBRDFa&pBRDFk&pBRDFb&pBRDFe&re(mbottom)&im(mbottom) \\
125
+ &IPT=-202 & albedo& BN& BN& BN& BN& BN \\
126
+ &IPT=-202 & fiso &fvol & fgeo & BN & BN& BN \\
127
+ \end{tabular}
128
+ \label{tab:InputFile}
129
+ \end{table}
130
+
131
+ Including the IPT, there are 7 numbers at each line. Table \ref{tab:InputFile} shows the proctor used for interpreting the inputs. BN means Blank Number, which is currently not used by the program; TAU is the optical depth of that layer; LBDOM is the single scattering albedo of that layer; wavelength is in micron, which is used in inelastic scattering simulations or infrared monochromatic simulations; Temperature is in Kelvin, which is only useful when you calculate infrared radiative transfer. EFLRSC is internally used by the inelastic scattering of ocean waters (by default it is set to 0 in monochromatic simulations); ALH is the atmospheric layer top height. ALH is only useful for calculating pseudospherical shell. To perform pseudospherical shell calculation, use the following in your main program:
132
+
133
+ %/Users/pwzhai/Research/RT/DSCOVR/SnowBRDF_Data/brdfPaperMaterial/ #snow brdf file path
134
+ \begin{verbatim}
135
+ USE RTUTILITY, ONLY : PSEUDO_SPHERICAL_SHELL
136
+ .
137
+ .
138
+ .
139
+
140
+ PSEUDO_SPHERICAL_SHELL=.true.
141
+ \end{verbatim}
142
+
143
+ \noindent And set ALH as the atmospheric layer top heights properly.
144
+
145
+ WindSpeed is the wind speed (m/s); re(mwater) and im(mwater) are the real and imaginary parts of the water refractive index; GlintFlag = 0 includs sun glints while GlintFlag = 1 does NOT include sun glint; RSR0P is the remote sensing reflectance just above the ocean surface. RSR0P is a user supplied value to calculate how Remote Sensing Reflectance just above ocean water propagate to the sensor level.
146
+
147
+ FWC is the fraction of white cap on surface. By default FWC is set to be zero in the input file, and its actual value will be calculated in RTSOS based on a parameterization in terms of wind speed. If FWC is set to be a number larger than 0 (and smaller than or equal to 1), then RSR0P should be set to: RSR0P=WCLBDO/PI, where WCLBDO is the equivalent Lambertian reflectance of white cap or other surface debris. Currently the option for user supplied FWC values is only available for IPT=-101 and IPT=-100.
148
+
149
+ For normal radiative transfer simulation, RSR0P should be zero by default. The interpretation of RSR0P can be summarized in the following four cases: \\
150
+
151
+ \begin{itemize}
152
+ \item IPT=-101, RSR0P$>$0, FWC=0.0: no ocean radiative transfer will be conducted, RSR0P would be the remote sensing reflectance of the ocean body based on in-situ measurement. \\
153
+ \item IPT=-101, RSR0P$>$0, FWC$>$0.0: no ocean radiative transfer will be conducted, RSR0P=WCLBDO/PI, where WCLBDO is the equivalent Lambertian reflectance of white cap or other surface debris, and FWC is the fraction of white cap on surface. \\
154
+ \item IPT=-100, RSR0P$>$0, FWC$>$0.0: full atmosphere-ocean radiative transfer will be conducted, RSR0P=WCLBDO/PI, where WCLBDO is the equivalent Lambertian reflectance of white cap or other surface debris, and FWC is the fraction of white cap on surface. \\
155
+ \item IPT=-100, RSR0P=0, FWC=0.0: full atmosphere-ocean radiative transfer will be conducted, WCLBDO and FWC are internally calculated in RTSOS based on parameterization in terms of wind speed.
156
+ \end{itemize}
157
+
158
+ For Lambertian surface, the value of albedo tells the lambertian surface reflection albedo; flam is the fraction of the surface which is lambertian reflection; The values of re(mbottom) and im(mbottom) are the real and imaginary refractive index of the surface which are used to determine Fresnel reflection when flam is less than 1.
159
+
160
+ Once the RTSOS code reads an IPT of in (-200 -101, -201, -202, -203), it won't accept more atmospheric or ocean layer specification, because there should be nothing below bottom. The line following the line of IPT=(-200 -101, -201, -202, -203) contains three integers: NCOL, NQUADA, and NQUADO. NCOL is the number of scattering orders to be performed. NCOL=10 normally gives fairly good precision. NQUADA and NQUADO are the quadrature numbers needed for the atmosphere and ocean source function integration, respectively. For the single quadrature code, NQUADO will be ignored. The next line contains three integers: NUMMIE, MAXLORD, and MAXMORD. NUMMIE is the number of Mie particle files. MAXLORD is the maximum L order used to expand the scattering matrices in terms of the Wigner d functions. MAXMORD is the maximum number of Fourier series order. There are NUMMIE lines following this line. Each line specifies the file names of the input files. The sequence of the file tells the RTSOS code which IPT this file is associated with.
161
+
162
+ The example input file specifies the following system with each line:
163
+ \begin{itemize}{}
164
+ \item Line 1: A detector is placed at the top of the atmosphere.
165
+ \item Line 2: An atmospheric layer, with an optical thickness of 0.1, and single scattering albedo of 1, IPT=1. Wavelength is 412 nm and temperature is 215 K.
166
+ \item Line 3: A second detector is placed at the bottom of the atmosphere.
167
+ \item Line 4: An ocean interface is placed below the atmosphere at the optical depth of 0.1, with the wind speed of 7 m/s, water refractive index is (1.34, 0), sun glint is turned on.
168
+ \item Line 5: A detector is placed at the top of the ocean (just below the ocean interface).
169
+ \item Line 6: An ocean layer is placed below the interface, with optical depth of 0.1, single scattering albedo of 1.0, IPT = 2. Wavelength is 412 nm and temperature is 215 K.
170
+ \item Line 7: A detector is placed at the bottom of the ocean.
171
+ \item Line 8: A Lambertian bottom is placed at the bottom of the ocean, with reflection albedo of 1.0. The fraction of lambertian reflection $f_{lamb}$=1. The surface refractive index is (1.5, 0), which is only useful if the lambertian fraction is less than 1. In this case the fraction 1-$f_{lamb}$ is characterized by the Frenesl reflection of a flat surface.
172
+ \item Line 9: The total number of scattering is 40, with NQUADA=30, NQUADO=60.
173
+ \item Line 10: There are two Mie input files, the maximum L order is 30, and the order of Fourier series is 10.
174
+ \item Line 11: IPT=1 ``RayDepol0.pmtx'' will be used
175
+ \item Line 12: IPT=2 gamma\_ aa\_ 0.03bb\_0.33wv0.35.pmtx will be used
176
+ \end{itemize}
177
+
178
+
179
+ The snow surface data is from
180
+ Hudson, S. R., S. G. Warren, R. E. Brandt, T. C. Grenfell, and D. Six (2006), Spectral bidirectional reflectance of Antarctic snow: Measurements and parameterization, J. Geophys. Res., 111, D18106, doi:10.1029/2006JD007290.
181
+
182
+ If IPT=-202 is specified, the program will read in a string following the pmtx file line which contains the directory of the snow BRDF data.
183
+
184
+ In the directory that you run \verb!rtsos_rao_dg.exe!, you should have a file called \verb!auxiliary_directory!, which contains the directory of the solar irradiance data file, which is needed when you perform infrared radiative transfer simulations.
185
+
186
+ The solar irradiance data file is among a collection of data files archived for the PACE simulator, which was documented in the README file of this repo:\
187
+ \verb!https://github.com/aoog-umbc/rtsos-public!
188
+
189
+ If you have not downloaded it yet, the address of the data file is: \\
190
+ \verb!http://doi.org/10.5281/zenodo.17410093!
191
+
192
+ The file is named as \verb!RTSOS_data_v1.0_20251022.tar.gz!, which can be placed in a convenient location of your choice, let's call it PACEDATADIR.
193
+
194
+ You can extract the files by doing the following in a linux terminal:
195
+
196
+ \begin{verbatim}
197
+ cd PACEDATADIR
198
+ tar -xf RTSOS_data_v1.0_20251022.tar.gz
199
+ \end{verbatim}
200
+
201
+ You will get two directories. One is \verb!PACEDATADIR/Gas_Absorption_Coefficients/!. The other is PACEDATADIR/Data/, which contains f0.txt, the solar irradiance data file. You can do the following to put PACEDATADIR/Data/ to \verb!auxiliary_directory!: \\
202
+
203
+ \begin{verbatim}
204
+ cd PACEDATADIR/Data/
205
+ pwd > SOSDIR/test/monochromatic/auxiliary_directory
206
+ \end{verbatim}
207
+
208
+ \noindent where SOSDIR/test/monochromatic/ is the directory of \verb!rtsos_rao_dg.exe!, where you will run the program.
209
+
210
+ \section{A few nots}
211
+
212
+ If wind speed is smaller than 0.5 m/s, the code will assume the ocean surface is flat. Otherwise, the random ocean wave surface will be used. The wave slope distribution will be Cox \& Munk (1954).
213
+
214
+ Three truncation scheme are used: delta fit, delta m, and delta m+ are now built-in in the package and the users can select from one of such truncation techniques.
215
+
216
+ White cap parameterization are implemented. Physically this means that the code can handle a mixture of lambertian reflector and random rough surfaces.
217
+
218
+ \section{ Mie input files}
219
+ The RTSOS code needs users provide the Mie particle files before any simulation. Please refer to our Optics Express (OE) paper for details. The RTSOS package comes with the Rayleigh examples: \verb"RayDepol0.pmtx"
220
+
221
+
222
+ \section{Example}
223
+ The package contains a number of test cases located at
224
+ SOS\_Callable/test/monochromatic/
225
+ and
226
+ SOS\_Callable/validation/benchmark
227
+
228
+
229
+ \section{Output file}
230
+ Data in this file are pretty much self-explained. The top part is the header, which shows the various parameters used in the calculation. The main body is the Stokes parameters I, Q, U, and V, as functions of viewing angles specified by the zenith angle Theta and azimuthal angle Phi. TAUDETA shows the optical depth of the detector in atmosphere and TAUDETO shows the optical depth of the detector in ocean.
231
+
232
+ \section{Important variables in the code}
233
+ The variables listed below are important. Users should not change them unless they understand what they are doing.
234
+
235
+ ``DELTATAUA'' and ``DELTATAUO'' are the non dimensional step sizes to do optical depth integration in atmosphere and ocean respectively. The typical value is 0.2 for these two variables. However, they have to be at most half of the optical depth of a homogeneous layer. For example, if the optical depth of a homogeneous atmosphere is 0.1, ``DELTATAUA'' has to be 0.05 at most. If benchmark values are wanted, use `` DELTATAUA=DELTATAUO=0.01.''
236
+
237
+ ESUN(1:4) is a column vector which specifies the irradiance Stokes vector of the solar incident source. Set ``ESUN(1)'' to 1 or $\pi$ according to your normalization convention.
238
+
239
+ ``{\bf \verb+WLR_FLAG+}'' is a logical variable. If ``\verb+WLR_FLAG=.true.+'', water leaving radiance vectors will be calculated for detectors in the atmosphere.
240
+ ``\verb+WLR_FLAG=.false.+'' the total radiance vectors will be calculated for specified detectors.
241
+
242
+ ``\verb+TRUC_FLAG+'' is a logical variable. If ``\verb+TRUC_FLAG=.true.+'', the delta-fit will be used to truncate the phase function and other scattering elements. The truncation factor f will be read in from the incident file and renormalize the optical depth and single scattering albedo. Otherwise, set it to .false. This variable is recommended to set to .true. always.
243
+
244
+ LINEXP is a logical variable. If it is set to be ``.true.'',the linear-exponential approximation will be used. Otherwise, the linear approximation will be used. The linear-exponential approximation will be always better than the linear approximation.
245
+
246
+ GEOSR is a logical variable. ''GEOSR=.true.'' the geometric series approximation will be used.
247
+
248
+ SCL is a logical variable. If ``SCL=.true.'' the code will produce scalar radiance output for detectors. ``SCL=.false.'', vector radiances will be calculated.
249
+
250
+ \verb+Mishchenko_Sign+: a logical variable. If ".true.", the code will use Mishchenko's convention for phase matrices expasion. The reference is:
251
+
252
+
253
+ {\it M. I. Mishchenko, L. D. Travis, and A. A. Lacis, Scattering, Absorption, and Emission of Light by Small Particles
254
+ (Cambridge University Press, Cambridge 2002)), Page 103--104}.
255
+
256
+
257
+ If ".false.", the code will use Siewert's convention:
258
+
259
+ {\it C. E. Siewert, ``On the phase matrix basic to the scattering of polarized light,'' Astron. Astrophys. 109, 195200 (1982)}.
260
+
261
+ Please refer to Eqs. (A-12) in the following paper for details:
262
+
263
+ {\it Peng-Wang Zhai, et a., ``A vector radiative transfer model for coupled atmosphere and ocean systems based on successive order of scattering method,'' Opt. Express 17, 2057-2079 (2009)
264
+ http://www.opticsinfobase.org/oe/abstract.cfm?URI=oe-17-4-2057}
265
+
266
+ new parameter: DELTAM.
267
+ ! DELTAM = 0 USE DELTA M FIT FOR THE PHASE MATRIX truncation
268
+ ! 1 USE DELTA M + FIT
269
+ ! 2 USE DELTA FIT
270
+
271
+ \end{document}
rtsos-1.1.0rc1/LICENSE ADDED
@@ -0,0 +1,40 @@
1
+ LICENSE
2
+
3
+ RTSOS – Radiative Transfer model based on Successive Orders of Scattering
4
+ Copyright © 2025 Pengwang Zhai.
5
+ 1. License Summary
6
+ RTSOS is made available for research and educational purposes under the terms of the Creative Commons Attribution–NonCommercial 4.0 International License (CC BY-NC 4.0).
7
+ You may freely use, modify, and share this software for non-commercial purposes, provided that you give appropriate credit and include this license notice in any redistribution.
8
+ Commercial use (including use in proprietary or revenue-generating products, consulting services, or contract research for profit) is not permitted without prior written permission.
9
+ For commercial licensing inquiries, please contact:
10
+ 📧 Pengwang Zhai – [pwzhai@gmail.com]
11
+ 2. License Terms (CC BY-NC 4.0)
12
+ You are free to:
13
+ Share — copy and redistribute the material in any medium or format
14
+ Adapt — remix, transform, and build upon the material
15
+ under the following terms:
16
+ Attribution — You must give appropriate credit, provide a link to the license, and indicate if changes were made.
17
+ Example citation:
18
+ Zhai, P. (2025). RTSOS: Radiative Transfer model based on Successive Orders of Scattering (Version 1.0). Zenodo. https://doi.org/xx.xxxx/zenodo.xxxxxx
19
+ NonCommercial — You may not use the material for commercial purposes.
20
+ No additional restrictions — You may not apply legal terms or technological measures that legally restrict others from doing anything the license permits.
21
+ The full license text is available at:
22
+ 🔗 https://creativecommons.org/licenses/by-nc/4.0/legalcode
23
+ 3. Disclaimer of Warranty
24
+ This software is provided “as is”, without warranty of any kind, express or implied, including but not limited to the warranties of merchantability, fitness for a particular purpose, and non-infringement.
25
+ In no event shall the author or copyright holder be liable for any claim, damages, or other liability arising from the use of this software.
26
+ 4. Citation and Acknowledgment
27
+ If you use RTSOS in a publication or presentation, please acknowledge:
28
+ Zhai, P. (2025). RTSOS: Radiative Transfer model based on Successive Orders of Scattering (Version 1.0). Available under the CC BY-NC 4.0 License.
29
+ 5. Commercial Licensing Clause
30
+ Commercial entities or projects seeking to use RTSOS in any form that contributes to a product, service, or revenue-generating activity must obtain a separate commercial license.
31
+ Please contact the author (Pengwang Zhai) to discuss terms for such use.
32
+ 6. Summary (non-legal plain language)
33
+ Use Case Permitted? Notes
34
+ Academic research ✅ Cite and acknowledge the author
35
+ Teaching or training ✅ Credit required
36
+ Open-source collaboration (non-commercial) ✅ Allowed under CC BY-NC 4.0
37
+ Government or nonprofit research ✅ Allowed
38
+ Commercial R&D, software, or consulting use 🚫 Requires a commercial license
39
+
40
+ End of License
@@ -0,0 +1,43 @@
1
+ Metadata-Version: 2.4
2
+ Name: rtsos
3
+ Version: 1.1.0rc1
4
+ Summary: Radiative Transfer model based on Successive Orders of Scattering
5
+ Author-Email: Pengwang Zhai <pwzhai@gmail.com>, Ian Carroll <ian.t.carroll@nasa.gov>
6
+ License-Expression: CC-BY-NC-4.0
7
+ Classifier: Development Status :: 3 - Alpha
8
+ Classifier: Intended Audience :: Science/Research
9
+ Classifier: Programming Language :: Fortran
10
+ Classifier: Programming Language :: Python :: 3
11
+ Classifier: Programming Language :: Python :: 3.12
12
+ Classifier: Programming Language :: Python :: 3.13
13
+ Classifier: Programming Language :: Python :: 3.14
14
+ Project-URL: repository, https://github.com/aoog-umbc/rtsos
15
+ Requires-Python: >=3.12
16
+ Requires-Dist: numpy>=2.3.3
17
+ Requires-Dist: xarray>=2022.3
18
+ Requires-Dist: netcdf4>=1.6.1
19
+ Requires-Dist: dask>=2022.10.2
20
+ Description-Content-Type: text/markdown
21
+
22
+ <!--
23
+ RTSOS — Radiative Transfer model based on Successive Orders of Scattering
24
+ Copyright © 2025 Pengwang Zhai.
25
+
26
+ Licensed under the Creative Commons Attribution–NonCommercial 4.0
27
+ International License (CC BY-NC 4.0).
28
+ You may use, modify, and share this code for research and
29
+ educational purposes with proper attribution.
30
+ Commercial use requires written permission from the author.
31
+
32
+ Full license: https://creativecommons.org/licenses/by-nc/4.0/
33
+ Contact: Pengwang Zhai | [pwzhai@gmail.com]
34
+ -->
35
+
36
+ # Radiative Transfer model based on Successive Orders of Scattering (RTSOS)
37
+
38
+ RTSOS can solve the multiple scattering radiative transfer equation from UV, visible, to infrared. It can handle atmosphere-land or atmosphere-ocean coupled systems. The atmosphere can be a mixture of molecules, aerosols, and cloud droplets. The land bottom can be Lambertian, snow surface, Ross-Li, and a number of other surfaces. The ocean waters are modeled by a mixture of pure ocean water, phytoplankton, and colored dissolved organic matter (CDOM), and other hydrosols. The sensors can be placed at arbitrary levels in the Earth system. The output of the sensor can include the full polarized Stokes parameters (I, Q, U, V). For more information, see References at the end of this document.
39
+
40
+ PACE simulator is a wrapper built around the monochromatic RTSOS, which has a list of built-in aerosol and ocean inherent optical properties. A publication on the PACE simulator is published on Frontiers in Remote Sensing (Zhai et al., 2022).
41
+
42
+ GSFC AC LUT is a wrapper built around the monochromatic RTSOS which
43
+ builds look up tables for atmospheric correction for retrievals of surface reflectance from top-of-atmosphere measurements.
@@ -0,0 +1,22 @@
1
+ <!--
2
+ RTSOS — Radiative Transfer model based on Successive Orders of Scattering
3
+ Copyright © 2025 Pengwang Zhai.
4
+
5
+ Licensed under the Creative Commons Attribution–NonCommercial 4.0
6
+ International License (CC BY-NC 4.0).
7
+ You may use, modify, and share this code for research and
8
+ educational purposes with proper attribution.
9
+ Commercial use requires written permission from the author.
10
+
11
+ Full license: https://creativecommons.org/licenses/by-nc/4.0/
12
+ Contact: Pengwang Zhai | [pwzhai@gmail.com]
13
+ -->
14
+
15
+ # Radiative Transfer model based on Successive Orders of Scattering (RTSOS)
16
+
17
+ RTSOS can solve the multiple scattering radiative transfer equation from UV, visible, to infrared. It can handle atmosphere-land or atmosphere-ocean coupled systems. The atmosphere can be a mixture of molecules, aerosols, and cloud droplets. The land bottom can be Lambertian, snow surface, Ross-Li, and a number of other surfaces. The ocean waters are modeled by a mixture of pure ocean water, phytoplankton, and colored dissolved organic matter (CDOM), and other hydrosols. The sensors can be placed at arbitrary levels in the Earth system. The output of the sensor can include the full polarized Stokes parameters (I, Q, U, V). For more information, see References at the end of this document.
18
+
19
+ PACE simulator is a wrapper built around the monochromatic RTSOS, which has a list of built-in aerosol and ocean inherent optical properties. A publication on the PACE simulator is published on Frontiers in Remote Sensing (Zhai et al., 2022).
20
+
21
+ GSFC AC LUT is a wrapper built around the monochromatic RTSOS which
22
+ builds look up tables for atmospheric correction for retrievals of surface reflectance from top-of-atmosphere measurements.
@@ -0,0 +1,212 @@
1
+ RTSOS — Radiative Transfer model based on Successive Orders of Scattering
2
+ Copyright © 2025 Pengwang Zhai. \
3
+ This software is released under the Creative Commons Attribution–NonCommercial 4.0 International (CC BY-NC 4.0) license.
4
+ You are free to use, modify, and share it for research and educational purposes, provided that you give appropriate credit.
5
+ Commercial use is not permitted without prior written consent from the author.
6
+ 📧 For commercial licensing inquiries, contact Pengwang Zhai at [pwzhai@gmail.com].
7
+ 🔗 Full license text: Creative Commons BY-NC 4.0 (https://creativecommons.org/licenses/by-nc/4.0/)
8
+
9
+ RTSOS can solve the multiple scattering radiative transfer equation from UV, visible, to infrared. It can handle atmosphere-land or atmosphere-ocean coupled systems. The atmosphere can be a mixture of molecules, aerosols, and cloud droplets. The land bottom can be Lambertian, snow surface, Ross-Li, and a number of other surfaces. The ocean waters are modeled by a mixture of pure ocean water, phytoplankton, and colored dissolved organic matter (CDOM), and other hydrosols. The sensors can be placed at arbitrary levels in the Earth system. The output of the sensor can include the full polarized Stokes parameters (I, Q, U, V). For more information, see References at the end of this document.
10
+
11
+
12
+ PACE simulator is a wrapper built around the monochromatic RTSOS, which has a list of built-in aerosol and ocean inherent optical properties. A publication on the PACE simulator is published on Frontiers in Remote Sensing (Zhai et al., 2022).
13
+
14
+ A collection of data files which are needed for simulating the PACE instruments can be downloaded at: \
15
+ http://doi.org/10.5281/zenodo.17410093
16
+
17
+ The file is named as RTSOS_data_v1.0_20251022.tar.gz, which can be placed in a convenient location of your choice, let's call it PACEDATADIR.
18
+
19
+ You can extract the files by doing the following in a linux terminal:
20
+
21
+ cd PACEDATADIR \
22
+ tar -xf RTSOS_data_v1.0_20251022.tar.gz
23
+
24
+ You will get two directories. One is PACEDATADIR/Gas_Absorption_Coefficients/, which contains the gas absorption cross section lookup table for H2O, O2, CH4, CO2, NO2, ozone. This lookup table was generated by using ARTS: The Atmospheric Radiative Transfer Simulator:
25
+ (https://www.radiativetransfer.org)version 2.3 with HITRAN2020 database (https://hitran.org/media/refs/HITRAN-2020.pdf).
26
+
27
+ The other is PACEDATADIR/Data/, which contains the absorption coefficients of pure water, plankton particles, the bidirectional reflectance distribution functions of snow surface, scattering matrix of dust particles, the instrument response functions of ocean color instrument, HARP2, and SPEXone, and a number of other data files used in the PACE simulator.
28
+
29
+ RTSOS and the PACE simulator requires a fortran 90 compiler (https://gcc.gnu.org/fortran/), hdf5 (https://www.hdfgroup.org/solutions/hdf5/) and lapack (https://www.netlib.org/lapack/) libraries.
30
+
31
+ ## Prerequisites
32
+ - Python >= 3.11
33
+ - HDF5 >= 1.10
34
+ - LAPACK >= 3.9
35
+ - a modern Fortran compiler (e.g. gfortran)
36
+
37
+
38
+ Section 1: COMPILE
39
+
40
+ The steps to use it is: compile the package, configure the input files, and run the code with the executable file. \
41
+ To compile, open a terminal and go to:
42
+
43
+ $cd RTSOSDIR/compile
44
+
45
+ where RTSOSDIR is where you clone this repo. Then try to compile the monochromatic code:
46
+
47
+ $make
48
+
49
+ If you get an error of missing Fortran compiler, examine "Makefile" and specify the correct Fortran command to F90, for example, ifx, ifort, gfortran, etc.. If successful, you have compiled the monochromatic radiative transfer package, which is the core of the PACE simulator.
50
+
51
+ Now you can edit the PACE Simulator make file to set the hdf5 library paths:
52
+
53
+ $emacs makefile_PACE_Simulator_DoubleK
54
+
55
+ Inside makefile_PACE_Simulator_DoubleK, you want to specify the following directories:
56
+
57
+ HDF5DIR=/usr/local/Cellar/hdf5@1.10/1.10.7\
58
+ HDF5LIB=-I$(HDF5DIR)/include\
59
+ H5FC=$(HDF5DIR)/bin/h5fc\
60
+ LIBSHDF=$(HDF5LIB) -L$(HDF5DIR)/lib/ -lhdf5 -lhdf5_fortran
61
+
62
+ If these are correctly set, you can compile the pace simulator:
63
+
64
+ $make clean\
65
+ $make -f makefile_PACE_Simulator_DoubleK
66
+
67
+ This will compile the pace simulator.
68
+
69
+ Section 2: RUN the MODELS
70
+
71
+ For monochromatic simulation, users are referred to the documentations located at
72
+ /Documentation/Describtion_of_input_files/SOS_io.pdf
73
+
74
+ Section 2.1 PACE Simulator
75
+
76
+ Section 2.1.1 Input files
77
+
78
+ To run the PACE simulator, user should become familiar with the input file formats.
79
+ We provided two python scripts to generate the input files, one for ocean and the other for land surfaces, respectively, which are located at:
80
+
81
+ test/PACE_Simulator/python_script/python_script/pace_simulator_twolayer_inputfile_land.py\
82
+ test/PACE_Simulator/python_script/python_script/pace_simulator_twolayer_inputfile_ocean.py
83
+
84
+ Study these two files before you execute them. Most importantly, change aux_dir and gas_absorption_coeff_dir to be:
85
+
86
+ aux_dir='PACEDATADIR/Data/'\
87
+ gas_absorption_coeff_dir='PACEDATADIR/Gas_Absorption_Coefficients/'
88
+
89
+ Section 2.1.2 Aerosol models
90
+
91
+ The Aerosol_Model[iaerosol] value is used in the PACE simulator input file to specify the aerosol models.
92
+
93
+ In the python script, Aerosol_Model is a array, you can use iaerosol to specify one of the aerosol models.
94
+
95
+ In the following we use IAEROSOL as Aerosol_Model[iaerosol] equivalently.
96
+
97
+ IAEROSOL=1-10 is the Shettle&Fenn model:
98
+
99
+ E. P. Shettle and R. W. Fenn, “Models for the aerosols of the lower atmosphere and the effects of humidity variations on their optical properties,” AFGL-TR 790214, U. S. Air Force Laboratory, Hanscom Air Force Base, Mass. (1979).
100
+
101
+ and
102
+
103
+ IAEROSOL=11-20;\
104
+ IRH=1-8 where RH(IRH)=(/0.30,0.50,0.70,0.75,0.80,0.85,0.90,0.95/).
105
+
106
+ are the new operational aerosol models currently used in the atmospheric correction at GSFC.
107
+
108
+ Ziauddin Ahmad, Bryan A. Franz, Charles R. McClain, Ewa J. Kwiatkowska, Jeremy Werdell, Eric P. Shettle, and Brent N. Holben, "New aerosol models for the retrieval of aerosol optical thickness and normalized water-leaving radiances from the SeaWiFS and MODIS sensors over coastal regions and open oceans," Appl. Opt. 49, 5545-5560 (2010)
109
+
110
+ For ocean simulations, ocean inherent optical properties are documented in Zhai et al., (2017, 2018, 2022).
111
+
112
+ IAEROSOL=-99 is reserved for the case that a user supplies aerosol/cloud phase matrices. See Sec. 2.2 for more information.
113
+
114
+ Section 2.1.3 Run the simulator
115
+
116
+ Now you may try out the pace simulator:
117
+
118
+ $cp rtsos_PACE_Simulator_DoubleK.exe ../test/PACE_Simulator/\
119
+ $cd ../test/PACE_Simulator/\
120
+ $mkdir alg_test
121
+ $cd alg_test
122
+ #run the simulator as:
123
+ $../rtsos_PACE_Simulator_DoubleK.exe input_rt_pace.txt
124
+
125
+ where "input_rt_pace.txt" is the input file to the simulator you generated in Section 2.1.1 using the python script.
126
+
127
+ The current version can conveniently generate synthetic datasets for OCI, HARP, and SPEX
128
+ for flexible datasets for OCI, HARP, and SPEX for flexible atmospheric and ocean conditions.
129
+ The input parameters are specified in input files.
130
+
131
+ Section 2.2 Single scattering matrix code
132
+
133
+ If you used IAEROSOL=-99 in the pace simulator input file, you will need to prepare the aerosol phase matrix. A tool was written by Neranga K. Hannadige (https://scholar.google.com/citations?user=0lAwqNsAAAAJ&hl=en) to generate the input scattering matrix files for the pace simulator. To use it, you can do the following:
134
+
135
+ cd RTSOSDIR/compile\
136
+ make -f makefile_aerosol_phmx_cal\
137
+ cp Aerosol_Phmx_Cal.exe ../test/PACE_Simulator/alg_test/\
138
+ cd ../test/PACE_Simulator/alg_test/\
139
+ ./Aerosol_Phmx_Cal.exe inputfile_for_aerosol_phase_matrix
140
+
141
+ where "inputfile_for_aerosol_phase_matrix" is the input file for the aerosol phase matrix calculator. You will need to generate inputfile_for_aerosol_phase_matrix by using the script
142
+
143
+ PACE_Simulator/python_script/Aerosol_PhaseMatrix_Cal_InputPre.py
144
+
145
+ In this script, you also want to specify: \
146
+ aux_dir='PACEDATADIR/Data/' \
147
+ and
148
+ aerosol_phasematrix_file_hi and aerosol_phasematrix_file_low to be the aerosol phase matrix files that are generated with the procedure shown above.
149
+
150
+ The single scattering matrix simulation uses the Mie code developed by M. Mishchenko
151
+ (Scattering, absorption, and emission of light by small particles, MI Mishchenko, LD Travis, AA Lacis - 2002)
152
+
153
+ A non spherical dust scattering matrix database is included, which was provided by Prof. Ping Yang at Texas A&M University (Meng, Z., P. Yang, G. Kattawar, L. Bi, K. Liou, and I. Laszlo, 2010: Single-scattering properties of tri-axial ellipsoidal mineral dust aerosols: A database for application to radiative transfer calculations. J. Aerosol Sci., 41, 501–512, https://doi.org/10.1016/j.jaerosci.2010.02.008.)
154
+
155
+ The single scattering matrix code assumes either bimodal (NMODE=2) or trimodal (NMODE=3) size distribution, see the following structure:
156
+ ----------------------------------------------------------------------
157
+ NMODE=2
158
+ ----------------------------------------------------------------------
159
+ Available aerosol modes:
160
+
161
+ *fine mode (fmfrac)
162
+ dust like (rf1)
163
+ water soluble (rf2)
164
+ BrC (rf3)
165
+ soot (1-(rf1+rf2+rf3))
166
+
167
+ *coarse mode (1-fmfrac)
168
+ sea salt (cmsfrac)
169
+ dust (1-cmsfrac)
170
+
171
+ ----------------------------------------------------------------------
172
+ NMODE=3
173
+ ----------------------------------------------------------------------
174
+ Available aerosol modes:
175
+
176
+ *fine mode (fmfrac)
177
+ water soluble (rf2)
178
+ BrC (rf3)
179
+ soot (1-(rf2+rf3))
180
+
181
+ *dust mode (dustfrac)
182
+ dust like (dsfrac)
183
+ dust (1-dsfrac)
184
+
185
+ *coarse mode (1-(fmfrac+dustfrac))
186
+ coarse mode includes sea salt only
187
+
188
+ ----------------------------------------------------------------------
189
+
190
+
191
+ *Note: Different sets of parameters are used for nmode=2 and nmode=3
192
+ For nmode=2 dustfrac and dsfrac do not exist
193
+ For nmode=3 rf1 and cmsfrac do not exist
194
+
195
+ References:
196
+
197
+ Zhai, P., Hu, Y., Trepte, C. R., Lucker, P. L. (2009). A vector radiative transfer model for coupled atmosphere and ocean systems based on successive order of scattering method. Optics express, 17(4), 2057-2079.
198
+
199
+ Zhai, P., Hu, Y., Chowdhary, J., Trepte, C. R., Lucker, P. L., Josset, D. B. (2010). A vector radiative transfer model for coupled atmosphere and ocean systems with a rough interface. Journal of Quantitative Spectroscopy and Radiative Transfer, 111(7), 1025-1040.
200
+
201
+ Zhai, P., Hu, Y., Josset, D. B., Trepte, C. R., Lucker, P. L., Lin, B. (2013). Advanced angular interpolation in the vector radiative transfer for coupled atmosphere and ocean systems. Journal of Quantitative Spectroscopy and Radiative Transfer, 115, 19-27.
202
+
203
+ Zhai, P., Hu, Y., Winker, D. M., Franz, B., Boss, E. (2015). Contribution of Raman scattering to polarized radiation field in ocean waters. Optics Express, 23(18), 23582-23596.
204
+
205
+ Zhai, P., Hu, Y., Winker, D. M., Franz, B., WERDELL, J., BOSS, E. (2017). Inelastic vector radiative transfer solution in ocean waters. Optics Express, 25, A223-A239.
206
+
207
+ Zhai, P., Boss, E., Franz, B., Werdell, J., Hu, Y. (2018). Radiative transfer modeling of phytoplankton fluorescence quenching processes. MDPI Remote Sensing, 10(8), 1039.
208
+
209
+ Zhai, P., Hu, Y. (2022). An improved pseudo spherical shell algorithm for vector radiative transfer. Journal of Quantitative Spectroscopy and Radiative Transfer, 282, 108132. https://www.sciencedirect.com/science/article/pii/S0022407322000693.
210
+
211
+ Zhai, P., Gao, M., Franz, B. A., Werdell, P. J., Ibrahim, A., Hu, Y., Chowdhary, J. (2022). A Radiative Transfer Simulator for PACE: Theory and Applications. Frontiers in Remote Sensing, 3. https://www.frontiersin.org/article/10.3389/frsen.2022.840188.
212
+