@@ -63,109 +63,66 @@ int main(int argc, char* argv[])
63
63
int temp_comp = get_temp_index (var_names_pf);
64
64
int spec_comp = get_spec_index (var_names_pf);
65
65
66
- // we will use a mask that tells us if a zone on the current level
67
- // is covered by data on a finer level.
68
-
69
66
amrex::Real sprad_max{-1.0 };
70
67
burn_t burn_state_max;
71
68
72
69
for (int ilev = 0 ; ilev <= fine_level; ++ilev) {
73
70
74
- if (ilev < fine_level) {
75
- IntVect ratio{pf.refRatio (ilev)};
76
- for (int idim = dim; idim < AMREX_SPACEDIM; ++idim) {
77
- ratio[idim] = 1 ;
78
- }
79
- const iMultiFab mask = makeFineMask (pf.boxArray (ilev), pf.DistributionMap (ilev),
80
- pf.boxArray (ilev+1 ), ratio);
81
-
82
- const MultiFab& lev_data_mf = pf.get (ilev);
83
-
84
- for (MFIter mfi (lev_data_mf); mfi.isValid (); ++mfi) {
85
- const Box& bx = mfi.validbox ();
86
- if (bx.ok ()) {
87
- const auto & m = mask.array (mfi);
88
- const auto & fab = lev_data_mf.array (mfi);
89
- const auto lo = amrex::lbound (bx);
90
- const auto hi = amrex::ubound (bx);
91
-
92
- for (int k = lo.z ; k <= hi.z ; ++k) {
93
- for (int j = lo.y ; j <= hi.y ; ++j) {
94
- for (int i = lo.x ; i <= hi.x ; ++i) {
95
-
96
- burn_t burn_state;
97
-
98
- burn_state.rho = fab (i,j,k,dens_comp);
99
- burn_state.T = fab (i,j,k,temp_comp);
100
- for (int n = 0 ; n < NumSpec; ++n) {
101
- burn_state.xn [n] = fab (i,j,k,spec_comp+n);
102
- }
103
-
104
- // we also need internal energy
105
- eos (eos_input_rt, burn_state);
106
- burn_state.e_scale = burn_state.e ;
107
-
108
- // we need to load up the integrator type
109
- constexpr int int_neqs = integrator_neqs<burn_t >();
110
- rkc_t <int_neqs> rstate;
111
- burn_to_integrator (burn_state, rstate);
112
- rstate.t = 0.0 ;
113
-
114
- amrex::Real sprad{};
115
- circle_theorem_sprad (rstate.t , burn_state, rstate, sprad);
116
-
117
- if (sprad > sprad_max) {
118
- sprad_max = sprad;
119
- burn_state_max = burn_state;
120
- }
121
- }
122
- }
123
- }
124
-
125
- } // bx.ok()
71
+ IntVect ratio{pf.refRatio (ilev)};
72
+ for (int idim = dim; idim < AMREX_SPACEDIM; ++idim) {
73
+ ratio[idim] = 1 ;
74
+ }
126
75
127
- } // MFIter
76
+ const MultiFab& lev_data_mf = pf. get (ilev);
128
77
129
- } else {
130
- // this is the finest level
78
+ for (MFIter mfi (lev_data_mf); mfi.isValid (); ++mfi) {
79
+ const Box& bx = mfi.validbox ();
80
+ if (bx.ok ()) {
81
+ const auto & fab = lev_data_mf.array (mfi);
82
+ const auto lo = amrex::lbound (bx);
83
+ const auto hi = amrex::ubound (bx);
131
84
132
- const MultiFab& lev_data_mf = pf.get (ilev);
85
+ for (int k = lo.z ; k <= hi.z ; ++k) {
86
+ for (int j = lo.y ; j <= hi.y ; ++j) {
87
+ for (int i = lo.x ; i <= hi.x ; ++i) {
133
88
134
- for (MFIter mfi (lev_data_mf); mfi.isValid (); ++mfi) {
135
- const Box& bx = mfi.validbox ();
136
- if (bx.ok ()) {
137
- const auto & fab = lev_data_mf.array (mfi);
138
- const auto lo = amrex::lbound (bx);
139
- const auto hi = amrex::ubound (bx);
89
+ burn_t burn_state;
140
90
141
- for (int k = lo.z ; k <= hi.z ; ++k) {
142
- for (int j = lo.y ; j <= hi.y ; ++j) {
143
- for (int i = lo.x ; i <= hi.x ; ++i) {
91
+ burn_state.rho = fab (i,j,k,dens_comp);
92
+ burn_state.T = fab (i,j,k,temp_comp);
93
+ for (int n = 0 ; n < NumSpec; ++n) {
94
+ burn_state.xn [n] = fab (i,j,k,spec_comp+n);
95
+ }
144
96
145
- eos_t eos_state;
97
+ // we also need internal energy
98
+ eos (eos_input_rt, burn_state);
99
+ burn_state.e_scale = burn_state.e ;
146
100
147
- eos_state. rho = fab (i,j,k,dens_comp);
148
- eos_state. T = fab (i,j,k,temp_comp );
149
- for ( int n = 0 ; n < NumSpec; ++n) {
150
- eos_state. xn [n] = fab (i,j,k,spec_comp+n );
151
- }
101
+ // we need to load up the integrator type
102
+ constexpr int int_neqs = integrator_neqs< burn_t >( );
103
+ rkc_t <int_neqs> rstate;
104
+ burn_to_integrator (burn_state, rstate );
105
+ rstate. t = 0.0 ;
152
106
153
- eos (eos_input_rt, eos_state);
107
+ amrex::Real sprad{};
108
+ circle_theorem_sprad (rstate.t , burn_state, rstate, sprad);
154
109
110
+ if (std::abs (sprad) > sprad_max) {
111
+ sprad_max = std::abs (sprad);
112
+ burn_state_max = burn_state;
155
113
}
156
114
}
157
115
}
116
+ }
158
117
159
- } // bx.ok()
160
-
161
- } // MFIter
118
+ } // bx.ok()
162
119
163
-
164
- }
120
+ } // MFIter
165
121
166
122
} // level loop
167
123
168
-
124
+ std::cout << " maximum spectral radius = " << sprad_max << std::endl;
125
+ std::cout << burn_state_max << std::endl;
169
126
170
127
// destroy timer for profiling
171
128
BL_PROFILE_VAR_STOP (pmain);
0 commit comments