@@ -241,7 +241,7 @@ static void rrtmgp_initialize(
241
241
load_cld_lutcoeff (cloud_optics_lw_k, cloud_optics_file_lw);
242
242
243
243
// initialize kokkos rrtmgp pool allocator
244
- const size_t base_ref = 80000 ;
244
+ const size_t base_ref = 40000 ;
245
245
const size_t ncol = gas_concs.ncol ;
246
246
const size_t nlay = gas_concs.nlay ;
247
247
const size_t nlev = SCREAM_NUM_VERTICAL_LEV;
@@ -681,10 +681,11 @@ static void rrtmgp_sw(
681
681
const int size6 = nday*ngpt;
682
682
const int size7 = nday*(nlay+1 )*nbnd; // 3
683
683
const int size8 = ncol*nlay*(k_dist.get_ngas ()+1 );
684
- const int size9 = ncol*nlay*ngas;
685
- const int size10 = ncol*nlay*ngpt; // 12
684
+ const int size9 = nday*nlay*ngas;
685
+ const int size10 = nday*nlay*nbnd; // 3
686
+ const int size11 = nday*nlay*ngpt; // 9
686
687
687
- const int total_size = size1 + size2*4 + size3*5 + size4 + size5*2 + size6 + size7*3 + size8 + size9 + size10*12 ;
688
+ const int total_size = size1 + size2*4 + size3*5 + size4 + size5*2 + size6 + size7*3 + size8 + size9 + size10*3 + size11* 9 ;
688
689
auto data = pool_t ::template alloc_and_init<RealT>(total_size); RealT* dcurr = data.data ();
689
690
690
691
auto mu0_day = view_t <RealT*> (dcurr, nday); dcurr += size1;
@@ -713,34 +714,36 @@ static void rrtmgp_sw(
713
714
714
715
auto col_gas = view_t <RealT***>(dcurr, ncol, nlay, k_dist.get_ngas ()+1 ); dcurr += size8;
715
716
716
- auto concs_mem = view_t <RealT***>(dcurr, ncol, nlay, ngas); dcurr += size9;
717
-
718
- auto sw_aero_tau_mem = view_t <RealT***>(dcurr, ncol, nlay, ngpt); dcurr += size10;
719
- auto sw_aero_ssa_mem = view_t <RealT***>(dcurr, ncol, nlay, ngpt); dcurr += size10;
720
- auto sw_aero_g_mem = view_t <RealT***>(dcurr, ncol, nlay, ngpt); dcurr += size10;
721
- auto sw_cloud_tau_mem = view_t <RealT***>(dcurr, ncol, nlay, ngpt); dcurr += size10;
722
- auto sw_cloud_ssa_mem = view_t <RealT***>(dcurr, ncol, nlay, ngpt); dcurr += size10;
723
- auto sw_cloud_g_mem = view_t <RealT***>(dcurr, ncol, nlay, ngpt); dcurr += size10;
724
- auto sw_optics_tau_mem = view_t <RealT***>(dcurr, ncol, nlay, ngpt); dcurr += size10;
725
- auto sw_optics_ssa_mem = view_t <RealT***>(dcurr, ncol, nlay, ngpt); dcurr += size10;
726
- auto sw_optics_g_mem = view_t <RealT***>(dcurr, ncol, nlay, ngpt); dcurr += size10;
727
- auto sw_noaero_tau_mem = view_t <RealT***>(dcurr, ncol, nlay, ngpt); dcurr += size10;
728
- auto sw_noaero_ssa_mem = view_t <RealT***>(dcurr, ncol, nlay, ngpt); dcurr += size10;
729
- auto sw_noaero_g_mem = view_t <RealT***>(dcurr, ncol, nlay, ngpt); dcurr += size10;
717
+ auto concs_mem = view_t <RealT***>(dcurr, nday, nlay, ngas); dcurr += size9;
718
+
719
+ auto sw_aero_tau_mem = view_t <RealT***>(dcurr, nday, nlay, nbnd); dcurr += size10;
720
+ auto sw_aero_ssa_mem = view_t <RealT***>(dcurr, nday, nlay, nbnd); dcurr += size10;
721
+ auto sw_aero_g_mem = view_t <RealT***>(dcurr, nday, nlay, nbnd); dcurr += size10;
722
+
723
+ auto sw_cloud_tau_mem = view_t <RealT***>(dcurr, nday, nlay, ngpt); dcurr += size11;
724
+ auto sw_cloud_ssa_mem = view_t <RealT***>(dcurr, nday, nlay, ngpt); dcurr += size11;
725
+ auto sw_cloud_g_mem = view_t <RealT***>(dcurr, nday, nlay, ngpt); dcurr += size11;
726
+ auto sw_optics_tau_mem = view_t <RealT***>(dcurr, nday, nlay, ngpt); dcurr += size11;
727
+ auto sw_optics_ssa_mem = view_t <RealT***>(dcurr, nday, nlay, ngpt); dcurr += size11;
728
+ auto sw_optics_g_mem = view_t <RealT***>(dcurr, nday, nlay, ngpt); dcurr += size11;
729
+ auto sw_noaero_tau_mem = view_t <RealT***>(dcurr, nday, nlay, ngpt); dcurr += size11;
730
+ auto sw_noaero_ssa_mem = view_t <RealT***>(dcurr, nday, nlay, ngpt); dcurr += size11;
731
+ auto sw_noaero_g_mem = view_t <RealT***>(dcurr, nday, nlay, ngpt); dcurr += size11;
730
732
731
733
const int int_size1 = 2 *nbnd;
732
- const int int_size2 = ngpt;
733
- const int total_int_size = 4 * (int_size1 + int_size2);
734
+ const int int_size2 = nbnd;
735
+ const int int_size3 = ngpt;
736
+ const int total_int_size = 3 * (int_size1 + int_size3) + (int_size1 + int_size2);
734
737
auto int_data = pool_t ::template alloc_and_init<int >(total_int_size); int *dcurr_int = int_data.data ();
735
738
736
739
auto sw_aero_band2gpt_mem = view_t <int **>(dcurr_int, 2 , nbnd); dcurr_int += int_size1;
737
- auto sw_aero_gpt2band_mem = view_t <int *>(dcurr_int, ngpt ); dcurr_int += int_size2;
740
+ auto sw_aero_gpt2band_mem = view_t <int *>(dcurr_int, nbnd ); dcurr_int += int_size2;
738
741
auto sw_cloud_band2gpt_mem = view_t <int **>(dcurr_int, 2 , nbnd); dcurr_int += int_size1;
739
- auto sw_cloud_gpt2band_mem = view_t <int *>(dcurr_int, ngpt); dcurr_int += int_size2 ;
742
+ auto sw_cloud_gpt2band_mem = view_t <int *>(dcurr_int, ngpt); dcurr_int += int_size3 ;
740
743
auto sw_optics_band2gpt_mem = view_t <int **>(dcurr_int, 2 , nbnd); dcurr_int += int_size1;
741
- auto sw_optics_gpt2band_mem = view_t <int *>(dcurr_int, ngpt); dcurr_int += int_size2 ;
744
+ auto sw_optics_gpt2band_mem = view_t <int *>(dcurr_int, ngpt); dcurr_int += int_size3 ;
742
745
auto sw_noaero_band2gpt_mem = view_t <int **>(dcurr_int, 2 , nbnd); dcurr_int += int_size1;
743
- auto sw_noaero_gpt2band_mem = view_t <int *>(dcurr_int, ngpt); dcurr_int += int_size2 ;
746
+ auto sw_noaero_gpt2band_mem = view_t <int *>(dcurr_int, ngpt); dcurr_int += int_size3 ;
744
747
745
748
// Subset mu0
746
749
TIMED_KERNEL (Kokkos::parallel_for (nday, KOKKOS_LAMBDA (int iday) {
@@ -936,7 +939,7 @@ static void rrtmgp_lw(
936
939
const int size7 = ncol*nlay*ngpt; // 5
937
940
const int size8 = ncol*ngpt;
938
941
939
- const int total_size = size1 + size2 + size3*2 + size4 + size5 + size6 + size7*5 * size8; ;
942
+ const int total_size = size1 + size2 + size3*2 + size4 + size5 + size6 + size7*5 + size8;
940
943
auto data = pool_t ::template alloc_and_init<RealT>(total_size); RealT *dcurr = data.data ();
941
944
942
945
view_t <RealT*> t_sfc (dcurr, ncol); dcurr += size1;
0 commit comments