971 double obliqr, lambm0, mvelpp;
976 if (eccen >= 0 && obliq >= 0 && mvelp >= 0) {
981 mvelp, obliqr, lambm0, mvelpp);
987 static constexpr
double dpy[] = {0.0 , 31.0, 59.0, 90.0, 120.0, 151.0,
988 181.0, 212.0, 243.0, 273.0, 304.0, 334.0};
992 if (leap) { calday += 1.0; }
993 orbital_decl(calday, eccen, mvelpp, lambm0, obliqr, delta, eccf);
997 if (fixed_total_solar_irradiance >= 0){
998 eccf = fixed_total_solar_irradiance/1360.9;
1006 for (
int igas(0); igas <
m_ngas; ++igas) {
1007 auto tmp2d_d =
tmp2d;
1010 if (name ==
"H2O") {
1012 Kokkos::parallel_for(Kokkos::MDRangePolicy<Kokkos::Rank<2>>({0, 0}, {ncol, nlay}),
1013 KOKKOS_LAMBDA (
int icol,
int ilay)
1015 tmp2d_d(icol,ilay) = qv_lay_d(icol,ilay) *
mwdair/ gas_mol_weight;
1017 }
else if (name ==
"CO2") {
1019 }
else if (name ==
"O3") {
1024 Kokkos::parallel_for(Kokkos::MDRangePolicy<Kokkos::Rank<2>>({0, 0}, {ncol, nlay}),
1025 KOKKOS_LAMBDA (
int icol,
int ilay)
1027 tmp2d_d(icol,ilay) = o3_lay_d(ilay);
1030 }
else if (name ==
"N2O") {
1032 }
else if (name ==
"CO") {
1034 }
else if (name ==
"CH4") {
1036 }
else if (name ==
"O2") {
1038 }
else if (name ==
"N2") {
1041 Abort(
"Radiation: Unknown gas component.");
1050 auto h_mu0 = Kokkos::create_mirror_view_and_copy(Kokkos::HostSpace(),
mu0);
1054 auto h_lat = Kokkos::create_mirror_view_and_copy(Kokkos::HostSpace(),
lat);
1055 auto h_lon = Kokkos::create_mirror_view_and_copy(Kokkos::HostSpace(),
lon);
1056 double dt = double(
m_dt);
1058 Kokkos::parallel_for(Kokkos::RangePolicy<Kokkos::Serial>(0, ncol),
1059 KOKKOS_LAMBDA (
int icol)
1062 double lat_col = h_lat(icol)*
PI/180.0;
1063 double lon_col = h_lon(icol)*
PI/180.0;
1064 double lcalday = calday;
1065 double ldelta = delta;
1066 h_mu0(icol) = Real(
orbital_cos_zenith(lcalday, lat_col, lon_col, ldelta, rad_freq_in_steps * dt));
1069 Kokkos::deep_copy(
mu0, h_mu0);
1078 Kokkos::parallel_for(Kokkos::MDRangePolicy<Kokkos::Rank<2>>({0, 0}, {ncol, nlay}),
1079 KOKKOS_LAMBDA (
int icol,
int ilay)
1081 lwp_d(icol,ilay) *= 1.e3;
1082 iwp_d(icol,ilay) *= 1.e3;
1118 Kokkos::deep_copy(
mu0, 0.86);
1140 Kokkos::parallel_for(Kokkos::MDRangePolicy<Kokkos::Rank<2>>({0, 0}, {ncol, nlay}),
1141 KOKKOS_LAMBDA (
int icol,
int ilay)
1144 (
p_lay(icol,ilay) < 900. * 100.) &&
1205 Kokkos::parallel_for(Kokkos::MDRangePolicy<Kokkos::Rank<3>>({0, 0, 0}, {ncol, nlay+1, nswbands}),
1206 KOKKOS_LAMBDA (
int icol,
int ilay,
int ibnd)
1208 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:278
int m_orbital_mon
Definition: ERF_Radiation.H:392
int m_orbital_sec
Definition: ERF_Radiation.H:394
int m_orbital_day
Definition: ERF_Radiation.H:393
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