1002 double obliqr, lambm0, mvelpp;
1007 if (eccen >= 0 && obliq >= 0 && mvelp >= 0) {
1012 mvelp, obliqr, lambm0, mvelpp);
1017 static constexpr
double dpy[] = {0.0 , 31.0, 59.0, 90.0, 120.0, 151.0,
1018 181.0, 212.0, 243.0, 273.0, 304.0, 334.0};
1022 if (leap) { calday += 1.0; }
1023 orbital_decl(calday, eccen, mvelpp, lambm0, obliqr, delta, eccf);
1027 if (fixed_total_solar_irradiance >= 0){
1028 eccf = fixed_total_solar_irradiance/1360.9;
1036 for (
int igas(0); igas <
m_ngas; ++igas) {
1037 auto tmp2d = Kokkos::View<RealT**,layout_t,KokkosDefaultMem>(
"tmp2d", ncol, nlay);
1040 if (name ==
"H2O") {
1042 Kokkos::parallel_for(Kokkos::MDRangePolicy<Kokkos::Rank<2>>({0, 0}, {ncol, nlay}),
1043 KOKKOS_LAMBDA (
int icol,
int ilay)
1045 tmp2d(icol,ilay) = qv_lay_d(icol,ilay) *
mwdair/gas_mol_weight;
1047 }
else if (name ==
"CO2") {
1048 Kokkos::deep_copy(tmp2d,
m_co2vmr);
1049 }
else if (name ==
"O3") {
1051 Kokkos::deep_copy(tmp2d,
m_o3vmr[0] );
1054 Kokkos::parallel_for(Kokkos::MDRangePolicy<Kokkos::Rank<2>>({0, 0}, {ncol, nlay}),
1055 KOKKOS_LAMBDA (
int icol,
int ilay)
1057 tmp2d(icol,ilay) = o3_lay_d(ilay);
1060 }
else if (name ==
"N2O") {
1061 Kokkos::deep_copy(tmp2d,
m_n2ovmr);
1062 }
else if (name ==
"CO") {
1063 Kokkos::deep_copy(tmp2d,
m_covmr );
1064 }
else if (name ==
"CH4") {
1065 Kokkos::deep_copy(tmp2d,
m_ch4vmr);
1066 }
else if (name ==
"O2") {
1067 Kokkos::deep_copy(tmp2d,
m_o2vmr );
1068 }
else if (name ==
"N2") {
1069 Kokkos::deep_copy(tmp2d,
m_n2vmr );
1071 Abort(
"Radiation: Unknown gas component.");
1081 auto h_mu0 = Kokkos::create_mirror_view_and_copy(Kokkos::HostSpace(),
mu0);
1085 auto h_lat = Kokkos::create_mirror_view_and_copy(Kokkos::HostSpace(),
lat);
1086 auto h_lon = Kokkos::create_mirror_view_and_copy(Kokkos::HostSpace(),
lon);
1087 double dt = double(
m_dt);
1089 Kokkos::parallel_for(Kokkos::RangePolicy<Kokkos::Serial>(0, ncol),
1093 double lat_col = h_lat(icol)*
PI/180.0;
1094 double lon_col = h_lon(icol)*
PI/180.0;
1095 double lcalday = calday;
1096 double ldelta = delta;
1100 Kokkos::deep_copy(
mu0, h_mu0);
1109 Kokkos::parallel_for(Kokkos::MDRangePolicy<Kokkos::Rank<2>>({0, 0}, {ncol, nlay}),
1110 KOKKOS_LAMBDA (
int icol,
int ilay)
1112 lwp_d(icol,ilay) *= 1.e3;
1113 iwp_d(icol,ilay) *= 1.e3;
1148 Kokkos::deep_copy(
mu0, 0.86);
1170 Kokkos::parallel_for(Kokkos::MDRangePolicy<Kokkos::Rank<2>>({0, 0}, {ncol, nlay}),
1171 KOKKOS_LAMBDA (
int icol,
int ilay)
1174 (
p_lay(icol,ilay) < 900. * 100.) &&
1235 Kokkos::parallel_for(Kokkos::MDRangePolicy<Kokkos::Rank<3>>({0, 0, 0}, {ncol, nlay+1, nswbands}),
1236 KOKKOS_LAMBDA (
int icol,
int ilay,
int ibnd)
1238 sw_bnd_flux_dif_d(icol,ilay,ibnd) = sw_bnd_flux_dn_d(icol,ilay,ibnd) - sw_bnd_flux_dir_d(icol,ilay,ibnd);
static constexpr int ORB_UNDEF_INT
Definition: ERF_Constants.H:96
constexpr amrex::Real mwdair
Definition: ERF_Constants.H:64
constexpr amrex::Real PI
Definition: ERF_Constants.H:6
double real
Definition: ERF_OrbCosZenith.H:9
AMREX_GPU_HOST AMREX_FORCE_INLINE real orbital_cos_zenith(real &jday, real &lat, real &lon, real &declin, real dt_avg=-1., real uniform_angle=-1., real constant_zenith_angle_deg=-1.)
Definition: ERF_OrbCosZenith.H:559
AMREX_GPU_HOST AMREX_FORCE_INLINE void orbital_decl(real &calday, real &eccen, real &mvelpp, real &lambm0, real &obliqr, real &delta, real &eccf)
Definition: ERF_OrbCosZenith.H:15
AMREX_GPU_HOST AMREX_FORCE_INLINE void orbital_params(int &iyear_AD, real &eccen, real &obliq, real &mvelp, real &obliqr, real &lambm0, real &mvelpp)
Definition: ERF_OrbCosZenith.H:81
real3d_k aero_tau_sw
Definition: ERF_Radiation.H:448
real3d_k cld_tau_lw_gpt
Definition: ERF_Radiation.H:459
real3d_k cld_tau_sw_gpt
Definition: ERF_Radiation.H:458
real3d_k cld_tau_lw_bnd
Definition: ERF_Radiation.H:455
real3d_k aero_g_sw
Definition: ERF_Radiation.H:450
amrex::Real m_dt
Definition: ERF_Radiation.H:218
real3d_k aero_ssa_sw
Definition: ERF_Radiation.H:449
real3d_k aero_tau_lw
Definition: ERF_Radiation.H:451
real3d_k cld_tau_sw_bnd
Definition: ERF_Radiation.H:454
void rrtmgp_main(const int ncol, const int nlay, real2d_k &p_lay, real2d_k &t_lay, real2d_k &p_lev, real2d_k &t_lev, gas_concs_t &gas_concs, real2d_k &sfc_alb_dir, real2d_k &sfc_alb_dif, real1d_k &mu0, real1d_k &t_sfc, real2d_k &emis_sfc, real1d_k &lw_src, real2d_k &lwp, real2d_k &iwp, real2d_k &rel, real2d_k &rei, real2d_k &cldfrac, real3d_k &, real3d_k &, real3d_k &, real3d_k &, real3d_k &, real3d_k &, real3d_k &, real3d_k &, real2d_k &sw_flux_up, real2d_k &sw_flux_dn, real2d_k &sw_flux_dn_dir, real2d_k &lw_flux_up, real2d_k &lw_flux_dn, real2d_k &sw_clnclrsky_flux_up, real2d_k &sw_clnclrsky_flux_dn, real2d_k &sw_clnclrsky_flux_dn_dir, real2d_k &sw_clrsky_flux_up, real2d_k &sw_clrsky_flux_dn, real2d_k &sw_clrsky_flux_dn_dir, real2d_k &sw_clnsky_flux_up, real2d_k &sw_clnsky_flux_dn, real2d_k &sw_clnsky_flux_dn_dir, real2d_k &lw_clnclrsky_flux_up, real2d_k &lw_clnclrsky_flux_dn, real2d_k &lw_clrsky_flux_up, real2d_k &lw_clrsky_flux_dn, real2d_k &lw_clnsky_flux_up, real2d_k &lw_clnsky_flux_dn, real3d_k &sw_bnd_flux_up, real3d_k &sw_bnd_flux_dn, real3d_k &sw_bnd_flux_dn_dir, real3d_k &lw_bnd_flux_up, real3d_k &lw_bnd_flux_dn, const RealT tsi_scaling, const bool extra_clnclrsky_diag, const bool extra_clnsky_diag)
Definition: ERF_RRTMGP_Interface.cpp:384
void compute_band_by_band_surface_albedos(const int ncol, const int nswbands, real1d_k &sfc_alb_dir_vis, real1d_k &sfc_alb_dir_nir, real1d_k &sfc_alb_dif_vis, real1d_k &sfc_alb_dif_nir, real2d_k &sfc_alb_dir, real2d_k &sfc_alb_dif)
Definition: ERF_RRTMGP_Interface.cpp:282
void compute_broadband_surface_fluxes(const int ncol, const int kbot, const int nswbands, real3d_k &sw_bnd_flux_dir, real3d_k &sw_bnd_flux_dif, real1d_k &sfc_flux_dir_vis, real1d_k &sfc_flux_dir_nir, real1d_k &sfc_flux_dif_vis, real1d_k &sfc_flux_dif_nir)
Definition: ERF_RRTMGP_Interface.cpp:326
void mixing_ratio_to_cloud_mass(View1 const &mixing_ratio, View2 const &cloud_fraction, View3 const &rho, View4 const &dz, View5 const &cloud_mass)
Definition: ERF_RRTMGP_Utils.H:12
std::unique_ptr< cloud_optics_t > cloud_optics_sw_k
Definition: ERF_RRTMGP_Interface.cpp:18