@@ -68,19 +68,24 @@ void Rte_lw_gpu::rte_lw(
6868 const int n_gauss_angles)
6969{
7070 const int max_gauss_pts = 4 ;
71+
72+ // Weights and angle secants for "Gauss-Jacobi-5" quadrature.
73+ // Values from Table 1, R. J. Hogan 2023, doi:10.1002/qj.4598
7174 const Array_gpu<Float,2 > gauss_Ds (
72- Array<Float,2 >({ 1.66 , 0 ., 0 ., 0 .,
73- 1.18350343 , 2.81649655 , 0 ., 0 .,
74- 1.09719858 , 1.69338507 , 4.70941630 , 0 .,
75- 1.06056257 , 1.38282560 , 2.40148179 , 7.15513024 },
75+ Array<Float,2 >(
76+ { 1 ./0.6096748751 , 0 . , 0 . , 0 .,
77+ 1 ./0.2509907356 , 1 /0.7908473988 , 0 . , 0 .,
78+ 1 ./0.1024922169 , 1 /0.4417960320 , 1 ./0.8633751621 , 0 .,
79+ 1 ./0.0454586727 , 1 /0.2322334416 , 1 ./0.5740198775 , 1 ./0.903077597 },
7680 { max_gauss_pts, max_gauss_pts }));
7781
78- const Array<Float,2 > gauss_wts (
79- { 0.5 , 0 ., 0 ., 0 .,
80- 0.3180413817 , 0.1819586183 , 0 ., 0 .,
81- 0.2009319137 , 0.2292411064 , 0.0698269799 , 0 .,
82- 0.1355069134 , 0.2034645680 , 0.1298475476 , 0.0311809710 },
83- { max_gauss_pts, max_gauss_pts });
82+ const Array_gpu<Float,2 > gauss_wts (
83+ Array<Float,2 >(
84+ { 1 ., 0 ., 0 ., 0 .,
85+ 0.2300253764 , 0.7699746236 , 0 ., 0 .,
86+ 0.0437820218 , 0.3875796738 , 0.5686383044 , 0 .,
87+ 0.0092068785 , 0.1285704278 , 0.4323381850 , 0.4298845087 },
88+ { max_gauss_pts, max_gauss_pts }));
8489
8590 const int ncol = optical_props->get_ncol ();
8691 const int nlay = optical_props->get_nlay ();
0 commit comments