972 double obliqr, lambm0, mvelpp;
977 if (eccen >= 0 && obliq >= 0 && mvelp >= 0) {
982 mvelp, obliqr, lambm0, mvelpp);
988 static constexpr
double dpy[] = {0.0 , 31.0, 59.0, 90.0, 120.0, 151.0,
989 181.0, 212.0, 243.0, 273.0, 304.0, 334.0};
993 if (leap) { calday += 1.0; }
994 orbital_decl(calday, eccen, mvelpp, lambm0, obliqr, delta, eccf);
998 if (fixed_total_solar_irradiance >= 0){
999 eccf = fixed_total_solar_irradiance/1360.9;
1007 for (
int igas(0); igas <
m_ngas; ++igas) {
1008 auto tmp2d_d =
tmp2d;
1011 if (name ==
"H2O") {
1013 Kokkos::parallel_for(Kokkos::MDRangePolicy<Kokkos::Rank<2>>({0, 0}, {ncol, nlay}),
1014 KOKKOS_LAMBDA (
int icol,
int ilay)
1016 tmp2d_d(icol,ilay) = qv_lay_d(icol,ilay) *
mwdair/ gas_mol_weight;
1018 }
else if (name ==
"CO2") {
1020 }
else if (name ==
"O3") {
1025 Kokkos::parallel_for(Kokkos::MDRangePolicy<Kokkos::Rank<2>>({0, 0}, {ncol, nlay}),
1026 KOKKOS_LAMBDA (
int icol,
int ilay)
1028 tmp2d_d(icol,ilay) = o3_lay_d(ilay);
1031 }
else if (name ==
"N2O") {
1033 }
else if (name ==
"CO") {
1035 }
else if (name ==
"CH4") {
1037 }
else if (name ==
"O2") {
1039 }
else if (name ==
"N2") {
1042 Abort(
"Radiation: Unknown gas component.");
1051 auto h_mu0 = Kokkos::create_mirror_view_and_copy(Kokkos::HostSpace(),
mu0);
1055 auto h_lat = Kokkos::create_mirror_view_and_copy(Kokkos::HostSpace(),
lat);
1056 auto h_lon = Kokkos::create_mirror_view_and_copy(Kokkos::HostSpace(),
lon);
1057 double dt = double(
m_dt);
1059 Kokkos::parallel_for(Kokkos::RangePolicy<Kokkos::Serial>(0, ncol),
1060 KOKKOS_LAMBDA (
int icol)
1063 double lat_col = h_lat(icol)*
PI/180.0;
1064 double lon_col = h_lon(icol)*
PI/180.0;
1065 double lcalday = calday;
1066 double ldelta = delta;
1070 Kokkos::deep_copy(
mu0, h_mu0);
1079 Kokkos::parallel_for(Kokkos::MDRangePolicy<Kokkos::Rank<2>>({0, 0}, {ncol, nlay}),
1080 KOKKOS_LAMBDA (
int icol,
int ilay)
1082 lwp_d(icol,ilay) *= 1.e3;
1083 iwp_d(icol,ilay) *= 1.e3;
1119 Kokkos::deep_copy(
mu0, 0.86);
1141 Kokkos::parallel_for(Kokkos::MDRangePolicy<Kokkos::Rank<2>>({0, 0}, {ncol, nlay}),
1142 KOKKOS_LAMBDA (
int icol,
int ilay)
1145 (
p_lay(icol,ilay) < 900. * 100.) &&
1206 Kokkos::parallel_for(Kokkos::MDRangePolicy<Kokkos::Rank<3>>({0, 0, 0}, {ncol, nlay+1, nswbands}),
1207 KOKKOS_LAMBDA (
int icol,
int ilay,
int ibnd)
1209 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
amrex::Real m_dt
Definition: ERF_Radiation.H:215
int m_orbital_mon
Definition: ERF_Radiation.H:329
int m_orbital_sec
Definition: ERF_Radiation.H:331
int m_orbital_day
Definition: ERF_Radiation.H:330
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
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 &aer_tau_sw, real3d_k &aer_ssa_sw, real3d_k &aer_asm_sw, real3d_k &aer_tau_lw, real3d_k &cld_tau_sw_bnd, real3d_k &cld_tau_lw_bnd, real3d_k &cld_tau_sw_gpt, real3d_k &cld_tau_lw_gpt, 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