Skip to content

Commit 8f538e8

Browse files
committed
more work
1 parent 9490678 commit 8f538e8

File tree

1 file changed

+38
-81
lines changed

1 file changed

+38
-81
lines changed

source/spectral_radius/main.cpp

Lines changed: 38 additions & 81 deletions
Original file line numberDiff line numberDiff line change
@@ -63,109 +63,66 @@ int main(int argc, char* argv[])
6363
int temp_comp = get_temp_index(var_names_pf);
6464
int spec_comp = get_spec_index(var_names_pf);
6565

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-
6966
amrex::Real sprad_max{-1.0};
7067
burn_t burn_state_max;
7168

7269
for (int ilev = 0; ilev <= fine_level; ++ilev) {
7370

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+
}
12675

127-
} // MFIter
76+
const MultiFab& lev_data_mf = pf.get(ilev);
12877

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);
13184

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) {
13388

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;
14090

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+
}
14496

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;
146100

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;
152106

153-
eos(eos_input_rt, eos_state);
107+
amrex::Real sprad{};
108+
circle_theorem_sprad(rstate.t, burn_state, rstate, sprad);
154109

110+
if (std::abs(sprad) > sprad_max) {
111+
sprad_max = std::abs(sprad);
112+
burn_state_max = burn_state;
155113
}
156114
}
157115
}
116+
}
158117

159-
} // bx.ok()
160-
161-
} // MFIter
118+
} // bx.ok()
162119

163-
164-
}
120+
} // MFIter
165121

166122
} // level loop
167123

168-
124+
std::cout << "maximum spectral radius = " << sprad_max << std::endl;
125+
std::cout << burn_state_max << std::endl;
169126

170127
// destroy timer for profiling
171128
BL_PROFILE_VAR_STOP(pmain);

0 commit comments

Comments
 (0)