@@ -82,9 +82,6 @@ RRTMGPRadiation (const ekat::Comm& comm, const ekat::ParameterList& params)
82
82
83
83
// Determine rad timestep, specified as number of atm steps
84
84
m_rad_freq_in_steps = m_params.get <Int>(" rad_frequency" , 1 );
85
- // use ozone computed by a chemistry model, e.g., mam4xx
86
- m_prognostic_ozone =m_params.get <bool >(" prognostic_ozone" ,false );
87
-
88
85
}
89
86
90
87
void RRTMGPRadiation::set_grids (const std::shared_ptr<const GridsManager> grids_manager) {
@@ -303,11 +300,6 @@ void RRTMGPRadiation::set_grids(const std::shared_ptr<const GridsManager> grids_
303
300
m_grid->set_geometry_data (bands);
304
301
}
305
302
}
306
- // O3 from chemistry model
307
- if (m_prognostic_ozone)
308
- {
309
- add_field<Required>(" O3" , scalar3d_mid, mol/mol, grid_name);
310
- }
311
303
} // RRTMGPRadiation::set_grids
312
304
313
305
size_t RRTMGPRadiation::requested_buffer_size_in_bytes () const
@@ -391,9 +383,6 @@ void RRTMGPRadiation::init_buffers(const ATMBufferManager &buffer_manager)
391
383
mem += m_buffer.d_tint .size ();
392
384
m_buffer.d_dz = decltype (m_buffer.d_dz )(mem, m_col_chunk_size, m_nlay);
393
385
mem += m_buffer.d_dz .size ();
394
- //
395
- m_buffer.o3_prog = decltype (m_buffer.o3_prog )(mem, m_col_chunk_size, m_nlay);
396
- mem += m_buffer.o3_prog .size ();
397
386
// 3d arrays
398
387
m_buffer.sw_flux_up_k = decltype (m_buffer.sw_flux_up_k )(mem, m_col_chunk_size, m_nlay+1 );
399
388
mem += m_buffer.sw_flux_up_k .size ();
@@ -560,19 +549,6 @@ void RRTMGPRadiation::initialize_impl(const RunType run_type) {
560
549
561
550
m_force_run_on_next_step = run_type==RunType::Initial or
562
551
m_params.get (" force_run_after_restart" ,false );
563
-
564
- // If m_prognostic_ozone is true, we should not use O3 as it is currently employed in RRTMGP.
565
- if (m_prognostic_ozone)
566
- {
567
- for (int igas = 0 ; igas < m_ngas; igas++) {
568
- auto name = m_gas_names[igas];
569
- EKAT_REQUIRE_MSG (
570
- m_gas_names[igas] !=" o3" ,
571
- " Error! m_prognostic_ozone is set to true,"
572
- " remove o3 from list of active gases.. \n " );
573
- }
574
- }
575
-
576
552
}
577
553
578
554
// =========================================================================================
@@ -979,28 +955,6 @@ void RRTMGPRadiation::run_impl (const double dt) {
979
955
m_gas_concs_k.set_vmr (name, tmp2d_k);
980
956
}
981
957
982
- if (m_prognostic_ozone)
983
- {
984
- auto o3_dry_vmr = m_buffer.o3_prog ;
985
- // get O3 from FM, here we assume that O3 is wet_mmr
986
- auto o3_wet_mmr = get_field_out (" O3" ).get_view <Real**>();
987
- const Real O3_molecular_weigth= PC::get_gas_mol_weight (" o3" );
988
- const auto policy = ekat::ExeSpaceUtils<ExeSpace>::get_default_team_policy (ncol, m_nlay);
989
- const int nlev_local = m_nlay;
990
- Kokkos::parallel_for (policy, KOKKOS_LAMBDA (const MemberType& team) {
991
- const int icol = team.league_rank ();
992
- Kokkos::parallel_for (Kokkos::TeamVectorRange (team, nlev_local), [&] (const int & k) {
993
- // from wet to dry
994
- const Real o3_dry_mmr = PF::calculate_drymmr_from_wetmmr (o3_wet_mmr (icol,k),d_qv (icol,k));
995
- // Question: Do I need to use qv_dry?
996
- // from mmr to vmr
997
- o3_dry_vmr (icol,k) = PF::calculate_vmr_from_mmr (O3_molecular_weigth,
998
- d_qv (icol,k),o3_dry_mmr);
999
- });
1000
- });
1001
- m_gas_concs_k.set_vmr (" o3" , o3_dry_vmr);
1002
- }
1003
-
1004
958
// Set layer cloud fraction.
1005
959
//
1006
960
// If not doing subcolumn sampling for mcica, we want to make sure we use grid-mean
0 commit comments