Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
39 changes: 18 additions & 21 deletions allsky/allsky.ini
Original file line number Diff line number Diff line change
Expand Up @@ -2,34 +2,31 @@
shortwave = true
longwave = true
fluxes = true
cloud-optics = true
aerosol-optics = false
output-optical = false
output-bnd-fluxes = false
delta-cloud = true
delta-aerosol = false
liquid_cloud_optics = true
ice_cloud_optics = true
aerosol_optics = false
delta_cloud = true
delta_aerosol = false

# gpu-only (test_rte_rrtmgp_gpu)
# gpu_only (test_rte_rrtmgp_gpu)
timings = false

# raytracer (test_rte_rrtmgp_rt_gpu)
sw-two-stream = false
sw-raytracing = true
lw-raytracing = true
independent-column = false
liq-cloud-optics = false
ice-cloud-optics = false
lw-scattering = false
cloud-mie = false
single-gpt = false
sw_two_stream = false
sw_raytracing = true
lw_raytracing = true
independent_column = false
lw_scattering = false
cloud_mie = false
single_gpt = false
profiling = false
min-mfp-grid-ratio = true
min_mfp_grid_ratio = true
tica = false

[ints]
sw-raytracing = 256
lw-raytracing = 22
single-gpt = 1
sw_raytracing = 256
lw_raytracing = 22
single_gpt = 1

[floats]
min-mfp-grid-ratio = 1.0
min_mfp_grid_ratio = 1.0
Binary file removed data/aerosol_optics.nc
Binary file not shown.
12 changes: 6 additions & 6 deletions include_rt/raytracer_functions.h
Original file line number Diff line number Diff line change
Expand Up @@ -106,11 +106,11 @@ namespace Raytracer_functions
}

__device__
inline Float mie_sample_angle(const Float* mie_cdf, const Float* mie_lut, const Float random_number, const Float r_eff, const int n_mie)
inline Float mie_sample_angle(const Float* mie_cdf, const Float* mie_lut, const Float random_number, const Float* r_eff, const int ijk, const int n_mie)
{
// interpolation over effective radius. Currently, r_eff should range between 2.5 and 21.5 (similar to RRTMGP)
const int r_idx = min(max(int(r_eff-2.5), 0), 18);
const Float r_rest = fmod(r_eff-Float(2.5),Float(1.));
const int r_idx = min(max(int(r_eff[ijk]-2.5), 0), 18);
const Float r_rest = fmod(r_eff[ijk]-Float(2.5),Float(1.));

const int i = min(max(0, find_index(mie_cdf, n_mie, random_number)), n_mie - 2);

Expand All @@ -125,11 +125,11 @@ namespace Raytracer_functions
}

__device__
inline Float mie_interpolate_phase_table(const Float* mie_phase, const Float* mie_lut, const Float scat_ang, const Float r_eff, const int n_mie)
inline Float mie_interpolate_phase_table(const Float* mie_phase, const Float* mie_lut, const Float scat_ang, const Float* r_eff, const int ijk, const int n_mie)
{
// interpolation over effective radius. Currently, r_eff should range between 2.5 and 21.5 (similar to RRTMGP)
const int r_idx = min(max(int(r_eff-2.5), 0), 18);
const Float r_rest = fmod(r_eff-Float(2.5),Float(1.));
const int r_idx = min(max(int(r_eff[ijk]-2.5), 0), 18);
const Float r_rest = fmod(r_eff[ijk]-Float(2.5),Float(1.));

// interpolation between 1800 equally spaced scattering angles between 0 and PI (both inclusive).
constexpr Float d_pi = Float(1.74629942e-03);
Expand Down
2 changes: 1 addition & 1 deletion include_rt_kernels/raytracer_kernels_lw.h
Original file line number Diff line number Diff line change
Expand Up @@ -18,10 +18,10 @@ constexpr int rt_lw_kernel_grid = 256;

constexpr Float k_null_gas_min = Float(1.e-3);

template<Bool independent_column>
__global__
void ray_tracer_lw_kernel(
const Int rng_offset,
const bool independent_column,
const Int photons_to_shoot,
const double* __restrict__ alias_prob,
const int* __restrict__ alias_idx,
Expand Down
3 changes: 1 addition & 2 deletions include_rt_kernels/raytracer_kernels_sw.h
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,8 @@ constexpr int rt_kernel_grid = 256;

constexpr Float k_null_gas_min = Float(1.e-3);

__global__
template<Bool independent_column> __global__
void ray_tracer_kernel(
const bool independent_column,
const Int photons_to_shoot,
const Int qrng_grid_x,
const Int qrng_grid_y,
Expand Down
30 changes: 4 additions & 26 deletions include_test/radiation_solver.h
Original file line number Diff line number Diff line change
Expand Up @@ -46,19 +46,14 @@ class Radiation_solver_longwave
void solve(
const bool switch_fluxes,
const bool switch_cloud_optics,
const bool switch_output_optical,
const bool switch_output_bnd_fluxes,
const Gas_concs& gas_concs,
const Array<Float,2>& p_lay, const Array<Float,2>& p_lev,
const Array<Float,2>& t_lay, const Array<Float,2>& t_lev,
const Array<Float,2>& col_dry,
const Array<Float,1>& t_sfc, const Array<Float,2>& emis_sfc,
const Array<Float,2>& lwp, const Array<Float,2>& iwp,
const Array<Float,2>& rel, const Array<Float,2>& dei,
Array<Float,3>& tau, Array<Float,3>& lay_source,
Array<Float,3>& lev_source, Array<Float,2>& sfc_source,
Array<Float,2>& lw_flux_up, Array<Float,2>& lw_flux_dn, Array<Float,2>& lw_flux_net,
Array<Float,3>& lw_bnd_flux_up, Array<Float,3>& lw_bnd_flux_dn, Array<Float,3>& lw_bnd_flux_net) const;
Array<Float,2>& lw_flux_up, Array<Float,2>& lw_flux_dn, Array<Float,2>& lw_flux_net) const;

int get_n_gpt() const { return this->kdist->get_ngpt(); };
int get_n_bnd() const { return this->kdist->get_nband(); };
Expand All @@ -73,19 +68,14 @@ class Radiation_solver_longwave
void solve_gpu(
const bool switch_fluxes,
const bool switch_cloud_optics,
const bool switch_output_optical,
const bool switch_output_bnd_fluxes,
const Gas_concs_gpu& gas_concs,
const Array_gpu<Float,2>& p_lay, const Array_gpu<Float,2>& p_lev,
const Array_gpu<Float,2>& t_lay, const Array_gpu<Float,2>& t_lev,
const Array_gpu<Float,2>& col_dry,
const Array_gpu<Float,1>& t_sfc, const Array_gpu<Float,2>& emis_sfc,
const Array_gpu<Float,2>& lwp, const Array_gpu<Float,2>& iwp,
const Array_gpu<Float,2>& rel, const Array_gpu<Float,2>& dei,
Array_gpu<Float,3>& tau, Array_gpu<Float,3>& lay_source,
Array_gpu<Float,3>& lev_source, Array_gpu<Float,2>& sfc_source,
Array_gpu<Float,2>& lw_flux_up, Array_gpu<Float,2>& lw_flux_dn, Array_gpu<Float,2>& lw_flux_net,
Array_gpu<Float,3>& lw_bnd_flux_up, Array_gpu<Float,3>& lw_bnd_flux_dn, Array_gpu<Float,3>& lw_bnd_flux_net);
Array_gpu<Float,2>& lw_flux_up, Array_gpu<Float,2>& lw_flux_dn, Array_gpu<Float,2>& lw_flux_net);

int get_n_gpt_gpu() const { return this->kdist_gpu->get_ngpt(); };
int get_n_bnd_gpu() const { return this->kdist_gpu->get_nband(); };
Expand Down Expand Up @@ -140,8 +130,6 @@ class Radiation_solver_shortwave
const bool switch_fluxes,
const bool switch_cloud_optics,
const bool switch_aerosol_optics,
const bool switch_output_optical,
const bool switch_output_bnd_fluxes,
const bool switch_delta_cloud,
const bool switch_delta_aerosol,
const Gas_concs& gas_concs,
Expand All @@ -154,12 +142,8 @@ class Radiation_solver_shortwave
const Array<Float,2>& rel, const Array<Float,2>& dei,
const Array<Float,2>& rh,
const Aerosol_concs& aerosol_concs,
Array<Float,3>& tau, Array<Float,3>& ssa, Array<Float,3>& g,
Array<Float,2>& toa_src,
Array<Float,2>& sw_flux_up, Array<Float,2>& sw_flux_dn,
Array<Float,2>& sw_flux_dn_dir, Array<Float,2>& sw_flux_net,
Array<Float,3>& sw_bnd_flux_up, Array<Float,3>& sw_bnd_flux_dn,
Array<Float,3>& sw_bnd_flux_dn_dir, Array<Float,3>& sw_bnd_flux_net) const;
Array<Float,2>& sw_flux_dn_dir, Array<Float,2>& sw_flux_net) const;

int get_n_gpt() const { return this->kdist->get_ngpt(); };
int get_n_bnd() const { return this->kdist->get_nband(); };
Expand All @@ -177,8 +161,6 @@ class Radiation_solver_shortwave
const bool switch_fluxes,
const bool switch_cloud_optics,
const bool switch_aerosol_optics,
const bool switch_output_optical,
const bool switch_output_bnd_fluxes,
const bool switch_delta_cloud,
const bool switch_delta_aerosol,
const Gas_concs_gpu& gas_concs,
Expand All @@ -191,12 +173,8 @@ class Radiation_solver_shortwave
const Array_gpu<Float,2>& rel, const Array_gpu<Float,2>& dei,
const Array_gpu<Float,2>& rh,
const Aerosol_concs_gpu& aerosol_concs,
Array_gpu<Float,3>& tau, Array_gpu<Float,3>& ssa, Array_gpu<Float,3>& g,
Array_gpu<Float,2>& toa_src,
Array_gpu<Float,2>& sw_flux_up, Array_gpu<Float,2>& sw_flux_dn,
Array_gpu<Float,2>& sw_flux_dn_dir, Array_gpu<Float,2>& sw_flux_net,
Array_gpu<Float,3>& sw_bnd_flux_up, Array_gpu<Float,3>& sw_bnd_flux_dn,
Array_gpu<Float,3>& sw_bnd_flux_dn_dir, Array_gpu<Float,3>& sw_bnd_flux_net);
Array_gpu<Float,2>& sw_flux_dn_dir, Array_gpu<Float,2>& sw_flux_net);

int get_n_gpt_gpu() const { return this->kdist_gpu->get_ngpt(); };
int get_n_bnd_gpu() const { return this->kdist_gpu->get_nband(); };
Expand Down
57 changes: 4 additions & 53 deletions include_test/radiation_solver_bw.h
Original file line number Diff line number Diff line change
Expand Up @@ -34,35 +34,14 @@



class Radiation_solver_longwave
class Radiation_solver_bw_longwave
{
public:
Radiation_solver_longwave(
const Gas_concs& gas_concs,
const std::string& file_name_gas,
const std::string& file_name_cloud);

Radiation_solver_longwave(
Radiation_solver_bw_longwave(
const Gas_concs_gpu& gas_concs,
const std::string& file_name_gas,
const std::string& file_name_cloud);

void solve(
const bool switch_fluxes,
const bool switch_cloud_optics,
const bool switch_output_optical,
const bool switch_output_bnd_fluxes,
const Gas_concs& gas_concs,
const Array<Float,2>& p_lay, const Array<Float,2>& p_lev,
const Array<Float,2>& t_lay, const Array<Float,2>& t_lev,
const Array<Float,2>& col_dry,
const Array<Float,1>& t_sfc, const Array<Float,2>& emis_sfc,
const Array<Float,2>& lwp, const Array<Float,2>& iwp,
const Array<Float,2>& rel, const Array<Float,2>& dei,
Array<Float,3>& tau, Array<Float,3>& lay_source,
Array<Float,3>& lev_source_inc, Array<Float,3>& lev_source_dec, Array<Float,2>& sfc_source,
Array<Float,2>& lw_flux_up, Array<Float,2>& lw_flux_dn, Array<Float,2>& lw_flux_net,
Array<Float,3>& lw_bnd_flux_up, Array<Float,3>& lw_bnd_flux_dn, Array<Float,3>& lw_bnd_flux_net) const;

#ifdef __CUDACC__
void solve_gpu(
Expand Down Expand Up @@ -108,42 +87,15 @@ class Radiation_solver_longwave
};


class Radiation_solver_shortwave
class Radiation_solver_bw_shortwave
{
public:
Radiation_solver_shortwave(
const Gas_concs& gas_concs,
const std::string& file_name_gas,
const std::string& file_name_cloud,
const std::string& file_name_aerosol);
Radiation_solver_shortwave(
Radiation_solver_bw_shortwave(
const Gas_concs_gpu& gas_concs,
const std::string& file_name_gas,
const std::string& file_name_cloud,
const std::string& file_name_aerosol);

void solve(
const bool switch_fluxes,
const bool switch_cloud_optics,
const bool switch_output_optical,
const bool switch_output_bnd_fluxes,
const bool switch_delta_cloud,
const bool switch_delta_aerosol,
const Gas_concs& gas_concs,
const Array<Float,2>& p_lay, const Array<Float,2>& p_lev,
const Array<Float,2>& t_lay, const Array<Float,2>& t_lev,
const Array<Float,2>& col_dry,
const Array<Float,2>& sfc_alb,
const Array<Float,1>& tsi_scaling, const Array<Float,1>& mu0,
const Array<Float,2>& lwp, const Array<Float,2>& iwp,
const Array<Float,2>& rel, const Array<Float,2>& dei,
Array<Float,3>& tau, Array<Float,3>& ssa, Array<Float,3>& g,
Array<Float,2>& toa_src,
Array<Float,2>& sw_flux_up, Array<Float,2>& sw_flux_dn,
Array<Float,2>& sw_flux_dn_dir, Array<Float,2>& sw_flux_net,
Array<Float,3>& sw_bnd_flux_up, Array<Float,3>& sw_bnd_flux_dn,
Array<Float,3>& sw_bnd_flux_dn_dir, Array<Float,3>& sw_bnd_flux_net) const;

void load_mie_tables(
const std::string& file_name_mie_bb,
const std::string& file_name_mie_im,
Expand All @@ -152,7 +104,6 @@ class Radiation_solver_shortwave

#ifdef __CUDACC__
void solve_gpu(
const bool tune_step,
const bool switch_cloud_optics,
const bool switch_cloud_mie,
const bool switch_aerosol_optics,
Expand Down
2 changes: 2 additions & 0 deletions include_test/radiation_solver_rt.h
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,8 @@ class Radiation_solver_longwave
const bool switch_raytracing,
const bool switch_cloud_optics,
const bool switch_aerosol_optics,
const bool switch_delta_cloud,
const bool switch_delta_aerosol,
const bool switch_single_gpt,
const bool switch_lw_scattering,
const bool switch_independent_column,
Expand Down
2 changes: 1 addition & 1 deletion include_tilt/tilt_utils.h
Original file line number Diff line number Diff line change
Expand Up @@ -121,4 +121,4 @@ void tica_tilt(const Float sza, const Float azi,
Array<Float,2>& lwp_out, Array<Float,2>& iwp_out, Array<Float,2>& rel_out, Array<Float,2>& dei_out, Array<Float,2>& rh_out,
Gas_concs& gas_concs_out, Aerosol_concs& aerosol_concs_out,
std::vector<std::string> gas_names, std::vector<std::string> aerosol_names,
bool switch_cloud_optics, bool switch_liq_cloud_optics, bool switch_ice_cloud_optics, bool switch_aerosol_optics);
bool switch_liquid_cloud_optics, bool switch_ice_cloud_optics, bool switch_aerosol_optics);
39 changes: 18 additions & 21 deletions rcemip/rcemip.ini
Original file line number Diff line number Diff line change
Expand Up @@ -2,34 +2,31 @@
shortwave = true
longwave = true
fluxes = true
cloud-optics = false
aerosol-optics = false
output-optical = false
output-bnd-fluxes = false
delta-cloud = true
delta-aerosol = false
liquid_cloud_optics = false
ice_cloud_optics = false
aerosol_optics = false
delta_cloud = true
delta_aerosol = false

# gpu-only (test_rte_rrtmgp_gpu)
# gpu_only (test_rte_rrtmgp_gpu)
timings = false

# raytracer (test_rte_rrtmgp_rt_gpu)
sw-two-stream = false
sw-raytracing = true
lw-raytracing = true
independent-column = false
liq-cloud-optics = false
ice-cloud-optics = false
lw-scattering = false
cloud-mie = false
single-gpt = false
sw_two_stream = false
sw_raytracing = true
lw_raytracing = true
independent_column = false
lw_scattering = false
cloud_mie = false
single_gpt = false
profiling = false
min-mfp-grid-ratio = true
min_mfp_grid_ratio = true
tica = false

[ints]
sw-raytracing = 256
lw-raytracing = 22
single-gpt = 1
sw_raytracing = 256
lw_raytracing = 22
single_gpt = 1

[floats]
min-mfp-grid-ratio = 1.0
min_mfp_grid_ratio = 1.0
Loading