Skip to content

Commit 7375cde

Browse files
committedApr 2, 2018
remove sidecar
1 parent 0f178db commit 7375cde

File tree

13 files changed

+23
-1247
lines changed

13 files changed

+23
-1247
lines changed
 

‎Exec/HydroTests/TurbForce/Nyx_setup.cpp

-40
Original file line numberDiff line numberDiff line change
@@ -131,46 +131,6 @@ Nyx::variable_setup()
131131
error_setup();
132132
}
133133

134-
void
135-
Nyx::variable_setup_for_new_comp_procs()
136-
{
137-
std::cout << "***** fix Nyx::variable_setup_for_new_comp_procs()" << std::endl;
138-
/*
139-
BL_ASSERT(desc_lst.size() == 0);
140-
// desc_lst.clear();
141-
// derive_lst.clear();
142-
143-
// Initialize the network
144-
network_init();
145-
146-
147-
148-
149-
// Get options, set phys_bc
150-
read_params();
151-
152-
#ifdef NO_HYDRO
153-
no_hydro_setup();
154-
155-
#else
156-
if (do_hydro == 1)
157-
{
158-
hydro_setup();
159-
}
160-
#ifdef GRAVITY
161-
else
162-
{
163-
no_hydro_setup();
164-
}
165-
#endif
166-
#endif
167-
168-
//
169-
// DEFINE ERROR ESTIMATION QUANTITIES
170-
//
171-
error_setup();
172-
*/
173-
}
174134

175135
#ifndef NO_HYDRO
176136
void

‎Exec/LyA/inputs.small.dsc

-29
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,3 @@
1-
# This is an example script that shows how to run a small Nyx problem with
2-
# sidecars doing post-processing. The sidecar-specific parameters are at the
3-
# end of the inputs file.
41

52
# ------------------ INPUTS TO MAIN PROGRAM -------------------
63
max_step = 20
@@ -132,29 +129,3 @@ amr.derive_plot_vars = particle_count particle_mass_density pressure magvel
132129
#PROBIN FILENAME
133130
amr.probin_file = probin
134131

135-
# >>>>>>>>>>>>>>>>>>>> SIDECARS <<<<<<<<<<<<<<<<<<<<
136-
# how many MPI procs to use for sidecars?
137-
# Reeber needs at least 8.
138-
nSidecars = 8
139-
# how to distribute grids on sidecar procs? "2" means random
140-
how = 2
141-
# time step interval for doing Gimlet analysis
142-
nyx.gimlet_int = 5
143-
144-
# Parameters to Reeber. Remember that nyx.halo_int and reeber.halo_int need to
145-
# be the same.
146-
reeber.halo_int = 5
147-
reeber.component = 0
148-
reeber.negate = 1
149-
reeber.merge_tree_file = merge-tree-density
150-
reeber.merge_tree_int = 10
151-
reeber.compute_persistence_diagram = 1
152-
reeber.persistence_diagram_file = persistence-diagram-density
153-
reeber.persistence_diagram_int = 1
154-
reeber.persistence_diagram_eps = 1.0e9
155-
reeber.compute_halos = 1
156-
reeber.halo_extrema_threshold = 7.0e9
157-
reeber.halo_component_threshold = 6.0e9
158-
reeber.halo_extrema_threshold = 7.5e9
159-
reeber.halo_component_threshold = 7.0e9
160-
# >>>>>>>>>>>>>>>>>>>> SIDECARS <<<<<<<<<<<<<<<<<<<<

‎Exec/LyA/inputs_gimlet_in_transit.dsc

-11
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,3 @@
1-
# This is an example script that shows how to run a larger Nyx problem with
2-
# sidecars doing post-processing. The sidecar-specific parameters are at the
3-
# end of the inputs file.
41

52
# ------------------ INPUTS TO MAIN PROGRAM -------------------
63
max_step = 400
@@ -138,11 +135,3 @@ amr.plot_vars = density
138135
#PROBIN FILENAME
139136
amr.probin_file = probin
140137

141-
# >>>>>>>>>>>>>>>>>>>> SIDECARS <<<<<<<<<<<<<<<<<<<<
142-
# how many MPI procs to use for sidecars?
143-
nSidecars = 256
144-
# how to distribute grids on sidecar procs? "2" means random
145-
how = 2
146-
# time step interval for doing Gimlet analysis
147-
nyx.gimlet_int = 5
148-
# >>>>>>>>>>>>>>>>>>>> SIDECARS <<<<<<<<<<<<<<<<<<<<

‎Source/Gravity/Gravity.H

-4
Original file line numberDiff line numberDiff line change
@@ -139,10 +139,6 @@ public:
139139
void make_prescribed_grav(int level, amrex::Real time, amrex::MultiFab& grav, int addToExisting);
140140
#endif
141141

142-
// Routine to duplicate Gravity class data onto sidecars
143-
virtual void AddProcsToComp(amrex::Amr *aptr, int level, amrex::AmrLevel *level_data_to_install,
144-
int ioProcNumSCS, int ioProcNumAll, int scsMyId, MPI_Comm scsComm);
145-
146142
protected:
147143
//
148144
// Pointers to amr,amrlevel.

‎Source/Gravity/Gravity.cpp

-236
Original file line numberDiff line numberDiff line change
@@ -2278,239 +2278,3 @@ Gravity::set_boundary(BndryData& bd, MultiFab& rhs, const Real* dx)
22782278
}
22792279

22802280

2281-
2282-
// Routine to duplicate Gravity class data onto sidecars
2283-
void
2284-
Gravity::AddProcsToComp(Amr *aptr, int level, AmrLevel *level_data_to_install,
2285-
int ioProcNumSCS, int ioProcNumAll, int scsMyId, MPI_Comm scsComm)
2286-
{
2287-
parent = aptr;
2288-
2289-
2290-
// ---- pack up the ints
2291-
Vector<int> allInts;
2292-
2293-
if(scsMyId == ioProcNumSCS) {
2294-
allInts.push_back(density);
2295-
allInts.push_back(finest_level);
2296-
allInts.push_back(finest_level_allocated);
2297-
allInts.push_back(verbose);
2298-
allInts.push_back(no_sync);
2299-
allInts.push_back(no_composite);
2300-
allInts.push_back(dirichlet_bcs);
2301-
allInts.push_back(monopole_bcs);
2302-
allInts.push_back(solve_with_cpp);
2303-
allInts.push_back(solve_with_hpgmg);
2304-
allInts.push_back(stencil_type);
2305-
for(int i(0); i < 2*BL_SPACEDIM; ++i) { allInts.push_back(mg_bc[i]); }
2306-
}
2307-
2308-
amrex::BroadcastArray(allInts, scsMyId, ioProcNumSCS, scsComm);
2309-
2310-
// ---- unpack the ints
2311-
if(scsMyId != ioProcNumSCS) {
2312-
int count(0);
2313-
2314-
density = allInts[count++];
2315-
finest_level = allInts[count++];
2316-
finest_level_allocated = allInts[count++];
2317-
verbose = allInts[count++];
2318-
no_sync = allInts[count++];
2319-
no_composite = allInts[count++];
2320-
dirichlet_bcs = allInts[count++];
2321-
monopole_bcs = allInts[count++];
2322-
solve_with_cpp = allInts[count++];
2323-
solve_with_hpgmg = allInts[count++];
2324-
stencil_type = allInts[count++];
2325-
for(int i(0); i < 2*BL_SPACEDIM; ++i) { mg_bc[i] = allInts[count++]; }
2326-
2327-
BL_ASSERT(count == allInts.size());
2328-
}
2329-
2330-
2331-
// ---- pack up the Reals
2332-
Vector<Real> allReals;
2333-
if(scsMyId == ioProcNumSCS) {
2334-
allReals.push_back(mass_offset);
2335-
allReals.push_back(sl_tol);
2336-
allReals.push_back(ml_tol);
2337-
allReals.push_back(delta_tol);
2338-
allReals.push_back(Ggravity);
2339-
}
2340-
2341-
amrex::BroadcastArray(allReals, scsMyId, ioProcNumSCS, scsComm);
2342-
amrex::BroadcastArray(level_solver_resnorm, scsMyId, ioProcNumSCS, scsComm);
2343-
2344-
// ---- unpack the Reals
2345-
if(scsMyId != ioProcNumSCS) {
2346-
int count(0);
2347-
mass_offset = allReals[count++];
2348-
sl_tol = allReals[count++];
2349-
ml_tol = allReals[count++];
2350-
delta_tol = allReals[count++];
2351-
Ggravity = allReals[count++];
2352-
2353-
BL_ASSERT(count == allReals.size());
2354-
}
2355-
2356-
2357-
// ---- pack up the strings
2358-
Vector<std::string> allStrings;
2359-
Vector<char> serialStrings;
2360-
if(scsMyId == ioProcNumSCS) {
2361-
allStrings.push_back(gravity_type);
2362-
serialStrings = amrex::SerializeStringArray(allStrings);
2363-
}
2364-
2365-
amrex::BroadcastArray(serialStrings, scsMyId, ioProcNumSCS, scsComm);
2366-
2367-
// ---- unpack the strings
2368-
if(scsMyId != ioProcNumSCS) {
2369-
int count(0);
2370-
allStrings = amrex::UnSerializeStringArray(serialStrings);
2371-
gravity_type = allStrings[count++];
2372-
}
2373-
2374-
2375-
// ---- BCRec
2376-
Vector<int> bcrLo(BL_SPACEDIM), bcrHi(BL_SPACEDIM);
2377-
if(scsMyId == ioProcNumSCS) {
2378-
for(int i(0); i < bcrLo.size(); ++i) { bcrLo[i] = phys_bc->lo(i); }
2379-
for(int i(0); i < bcrHi.size(); ++i) { bcrHi[i] = phys_bc->hi(i); }
2380-
}
2381-
ParallelDescriptor::Bcast(bcrLo.dataPtr(), bcrLo.size(), ioProcNumSCS, scsComm);
2382-
ParallelDescriptor::Bcast(bcrHi.dataPtr(), bcrHi.size(), ioProcNumSCS, scsComm);
2383-
if(scsMyId != ioProcNumSCS) {
2384-
for(int i(0); i < bcrLo.size(); ++i) { phys_bc->setLo(i, bcrLo[i]); }
2385-
for(int i(0); i < bcrHi.size(); ++i) { phys_bc->setHi(i, bcrHi[i]); }
2386-
}
2387-
2388-
2389-
// ---- MultiFabs
2390-
2391-
// ---- ---- grad_phi_curr :: Vector< Vector<std::unique_ptr<MultiFab> > > grad_phi_curr;
2392-
if(scsMyId != ioProcNumSCS) {
2393-
for(int j(0); j < grad_phi_curr.size(); ++j) {
2394-
grad_phi_curr[j].clear();
2395-
}
2396-
}
2397-
int gpcSize(grad_phi_curr.size());
2398-
ParallelDescriptor::Bcast(&gpcSize, 1, ioProcNumSCS, scsComm);
2399-
if(scsMyId != ioProcNumSCS) {
2400-
grad_phi_curr.resize(gpcSize);
2401-
}
2402-
2403-
for(int j(0); j < grad_phi_curr.size(); ++j) {
2404-
Vector<int> isDefined;
2405-
2406-
if(scsMyId == ioProcNumSCS) {
2407-
isDefined.resize(grad_phi_curr[j].size());
2408-
for(int i(0); i < grad_phi_curr[j].size(); ++i) {
2409-
isDefined[i] = (grad_phi_curr[j][i] != nullptr);
2410-
}
2411-
}
2412-
amrex::BroadcastArray(isDefined, scsMyId, ioProcNumAll, scsComm);
2413-
if(isDefined.size() > 0) {
2414-
BL_ASSERT(isDefined.size() == BL_SPACEDIM);
2415-
if(scsMyId != ioProcNumSCS) {
2416-
grad_phi_curr[j].resize(isDefined.size());
2417-
for(int i(0); i < grad_phi_curr[j].size(); ++i) {
2418-
if(isDefined[i]) {
2419-
grad_phi_curr[j][i].reset(new MultiFab);
2420-
}
2421-
}
2422-
}
2423-
2424-
for(int i(0); i < grad_phi_curr[j].size(); ++i) {
2425-
if(grad_phi_curr[j][i]) {
2426-
grad_phi_curr[j][i]->AddProcsToComp(ioProcNumSCS, ioProcNumAll, scsMyId, scsComm);
2427-
}
2428-
}
2429-
}
2430-
}
2431-
2432-
2433-
// ---- ---- grad_phi_prev :: Vector< Vector<std::unique_ptr<MultiFab> > > grad_phi_prev;
2434-
if(scsMyId != ioProcNumSCS) {
2435-
for(int j(0); j < grad_phi_prev.size(); ++j) {
2436-
grad_phi_prev[j].clear();
2437-
}
2438-
}
2439-
int gppSize(grad_phi_prev.size());
2440-
ParallelDescriptor::Bcast(&gppSize, 1, ioProcNumSCS, scsComm);
2441-
if(scsMyId != ioProcNumSCS) {
2442-
grad_phi_prev.resize(gppSize);
2443-
}
2444-
2445-
for(int j(0); j < grad_phi_prev.size(); ++j) {
2446-
Vector<int> isDefined;
2447-
2448-
if(scsMyId == ioProcNumSCS) {
2449-
isDefined.resize(grad_phi_prev[j].size());
2450-
for(int i(0); i < grad_phi_prev[j].size(); ++i) {
2451-
isDefined[i] = (grad_phi_prev[j][i] != nullptr);
2452-
}
2453-
}
2454-
amrex::BroadcastArray(isDefined, scsMyId, ioProcNumAll, scsComm);
2455-
if(isDefined.size() > 0) {
2456-
BL_ASSERT(isDefined.size() == BL_SPACEDIM);
2457-
if(scsMyId != ioProcNumSCS) {
2458-
grad_phi_prev[j].resize(isDefined.size());
2459-
for(int i(0); i < grad_phi_prev[j].size(); ++i) {
2460-
if(isDefined[i]) {
2461-
grad_phi_prev[j][i].reset(new MultiFab);
2462-
}
2463-
}
2464-
}
2465-
for(int i(0); i < grad_phi_prev[j].size(); ++i) {
2466-
if(grad_phi_prev[j][i]) {
2467-
grad_phi_prev[j][i]->AddProcsToComp(ioProcNumSCS, ioProcNumAll, scsMyId, scsComm);
2468-
}
2469-
}
2470-
}
2471-
}
2472-
2473-
2474-
// ---- FluxRegisters :: Vector<std::unique_ptr<FluxRegister> > phi_flux_reg;
2475-
if(scsMyId != ioProcNumSCS) {
2476-
phi_flux_reg.clear();
2477-
}
2478-
int pfrSize(phi_flux_reg.size());
2479-
ParallelDescriptor::Bcast(&pfrSize, 1, ioProcNumSCS, scsComm);
2480-
if(scsMyId != ioProcNumSCS) {
2481-
phi_flux_reg.resize(pfrSize);
2482-
}
2483-
2484-
Vector<int> isDefined;
2485-
2486-
if(scsMyId == ioProcNumSCS) {
2487-
isDefined.resize(phi_flux_reg.size());
2488-
for(int i(0); i < phi_flux_reg.size(); ++i) {
2489-
isDefined[i] = (phi_flux_reg[i] != nullptr);
2490-
}
2491-
}
2492-
amrex::BroadcastArray(isDefined, scsMyId, ioProcNumAll, scsComm);
2493-
if(isDefined.size() > 0) {
2494-
if(scsMyId != ioProcNumSCS) {
2495-
phi_flux_reg.resize(isDefined.size());
2496-
for(int i(0); i < phi_flux_reg.size(); ++i) {
2497-
if(isDefined[i]) {
2498-
phi_flux_reg[i].reset(new FluxRegister);
2499-
}
2500-
}
2501-
}
2502-
2503-
for(int i(0); i < phi_flux_reg.size(); ++i) {
2504-
if(phi_flux_reg[i]) {
2505-
phi_flux_reg[i]->AddProcsToComp(ioProcNumSCS, ioProcNumAll, scsMyId, scsComm);
2506-
}
2507-
}
2508-
}
2509-
2510-
2511-
2512-
// ---- LevelData
2513-
LevelData[level] = level_data_to_install;
2514-
}
2515-
2516-

‎Source/Initialization/Nyx_setup.cpp

-40
Original file line numberDiff line numberDiff line change
@@ -134,46 +134,6 @@ Nyx::variable_setup()
134134
error_setup();
135135
}
136136

137-
void
138-
Nyx::variable_setup_for_new_comp_procs()
139-
{
140-
std::cout << "***** fix Nyx::variable_setup_for_new_comp_procs()" << std::endl;
141-
/*
142-
BL_ASSERT(desc_lst.size() == 0);
143-
// desc_lst.clear();
144-
// derive_lst.clear();
145-
146-
// Initialize the network
147-
network_init();
148-
149-
150-
151-
152-
// Get options, set phys_bc
153-
read_params();
154-
155-
#ifdef NO_HYDRO
156-
no_hydro_setup();
157-
158-
#else
159-
if (do_hydro == 1)
160-
{
161-
hydro_setup();
162-
}
163-
#ifdef GRAVITY
164-
else
165-
{
166-
no_hydro_setup();
167-
}
168-
#endif
169-
#endif
170-
171-
//
172-
// DEFINE ERROR ESTIMATION QUANTITIES
173-
//
174-
error_setup();
175-
*/
176-
}
177137

178138
#ifndef NO_HYDRO
179139
void

‎Source/Nyx.H

-10
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,6 @@ public:
116116
//Define data descriptors.
117117
//
118118
static void variable_setup();
119-
static void variable_setup_for_new_comp_procs();
120119
static void hydro_setup();
121120
static void no_hydro_setup();
122121

@@ -554,15 +553,6 @@ public:
554553
amrex::MultiFab* fine_mask;
555554
amrex::MultiFab* build_fine_mask();
556555

557-
static int forceParticleRedist; // ---- for dynamic sidecars
558-
static int nSidecarProcs;
559-
560-
virtual void AddProcsToComp(amrex::Amr *aptr, int nSidecarProcs, int prevSidecarProcs,
561-
int ioProcNumSCS, int ioProcNumAll, int scsMyId,
562-
MPI_Comm scsComm);
563-
virtual void NyxParticlesAddProcsToComp(amrex::Amr *aptr, int nSidecarProcs, int prevSidecarProcs,
564-
int ioProcNumSCS, int ioProcNumAll, int scsMyId,
565-
MPI_Comm scsComm);
566556
static void InitErrorList();
567557
static void InitDeriveList();
568558

‎Source/Nyx.cpp

+1-375
Large diffs are not rendered by default.

‎Source/NyxBld.cpp

-12
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,10 @@ class NyxBld
99
public LevelBld
1010
{
1111
virtual void variable_setup();
12-
virtual void variable_setup_for_new_comp_procs();
1312
virtual void variable_cleanup();
1413

1514
// hack copies for amrex overriding
1615
virtual void variableSetUp();
17-
virtual void variableSetUpForNewCompProcs();
1816
virtual void variableCleanUp();
1917

2018
virtual AmrLevel *operator() ();
@@ -39,12 +37,6 @@ NyxBld::variable_setup()
3937
Nyx::variable_setup();
4038
}
4139

42-
void
43-
NyxBld::variable_setup_for_new_comp_procs()
44-
{
45-
Nyx::variable_setup_for_new_comp_procs();
46-
}
47-
4840
void
4941
NyxBld::variable_cleanup()
5042
{
@@ -75,10 +67,6 @@ void NyxBld::variableSetUp()
7567
{
7668
Nyx::variable_setup();
7769
}
78-
void NyxBld::variableSetUpForNewCompProcs()
79-
{
80-
Nyx::variable_setup_for_new_comp_procs();
81-
}
8270
void NyxBld::variableCleanUp()
8371
{
8472
Nyx::variable_cleanup();

‎Source/NyxParticles.cpp

-9
Original file line numberDiff line numberDiff line change
@@ -1094,13 +1094,4 @@ Nyx::remove_ghost_particles()
10941094
}
10951095
}
10961096

1097-
1098-
1099-
void
1100-
Nyx::NyxParticlesAddProcsToComp(Amr *aptr, int nSidecarProcs, int prevSidecarProcs,
1101-
int ioProcNumSCS, int ioProcNumAll, int scsMyId,
1102-
MPI_Comm scsCommn)
1103-
{
1104-
}
1105-
11061097
//NyxParticleContainerBase::~NyxParticleContainerBase() {}

‎Source/Nyx_halos.cpp

-53
Original file line numberDiff line numberDiff line change
@@ -74,8 +74,6 @@ Nyx::halo_find (Real dt)
7474
{
7575
BL_PROFILE("Nyx::halo_find()");
7676

77-
const int whichSidecar(0);
78-
7977
const Real * dx = geom.CellSize();
8078

8179
amrex::MultiFab& new_state = get_new_data(State_Type);
@@ -108,7 +106,6 @@ Nyx::halo_find (Real dt)
108106
// Before creating new AGN particles, accrete mass onto existing particles
109107
halo_accrete(dt);
110108

111-
if (ParallelDescriptor::NProcsSidecar(0) <= 0)
112109
{ // we have no sidecars, so do everything in situ
113110

114111
BoxArray reeberBA;
@@ -317,57 +314,7 @@ Nyx::halo_find (Real dt)
317314

318315
#ifdef REEBER
319316
}
320-
#if 0
321-
else { // we have sidecars, so do everything in-transit
322-
323-
int sidecarSignal(NyxHaloFinderSignal);
324-
const int MPI_IntraGroup_Broadcast_Rank = ParallelDescriptor::IOProcessor() ? MPI_ROOT : MPI_PROC_NULL;
325-
ParallelDescriptor::Bcast(&sidecarSignal, 1, MPI_IntraGroup_Broadcast_Rank,
326-
ParallelDescriptor::CommunicatorInter(whichSidecar));
327-
328-
Geometry geom(Geom());
329-
Geometry::SendGeometryToSidecar(&geom, whichSidecar);
330-
331-
// FIXME: What is distribution mapping?
332-
amrex::MultiFab reeberMF(grids, reeber_density_var_list.size(), 0);
333-
int cnt = 0;
334-
// Derive quantities and store in components 1... of MultiFAB
335-
for (auto it = reeber_density_var_list.begin(); it != reeber_density_var_list.end(); ++it)
336-
{
337-
std::unique_ptr<MultiFab> derive_dat = particle_derive(*it, cur_time, 0);
338-
reeberMF.copy(*derive_dat, comp0, cnt, ncomp1, nghost0, nghost0);
339-
cnt++;
340-
}
341-
342-
int time_step(nStep()), nComp(reeberMF.nComp());
343-
344-
ParallelDescriptor::Bcast(&nComp, 1, MPI_IntraGroup_Broadcast_Rank,
345-
ParallelDescriptor::CommunicatorInter(whichSidecar));
346-
347-
amrex::MultiFab *mfSource = &reeberMF;
348-
amrex::MultiFab *mfDest = 0;
349-
int srcComp(0), destComp(1);
350-
int srcNGhost(0), destNGhost(0);
351-
MPI_Comm commSrc(ParallelDescriptor::CommunicatorComp());
352-
MPI_Comm commDest(ParallelDescriptor::CommunicatorSidecar());
353-
MPI_Comm commInter(ParallelDescriptor::CommunicatorInter(whichSidecar));
354-
MPI_Comm commBoth(ParallelDescriptor::CommunicatorBoth(whichSidecar));
355-
bool isSrc(true);
356-
357-
amrex::MultiFab::copyInter(mfSource, mfDest, srcComp, destComp, nComp,
358-
srcNGhost, destNGhost,
359-
commSrc, commDest, commInter, commBoth,
360-
isSrc);
361-
362-
363-
ParallelDescriptor::Bcast(&time_step, 1, MPI_IntraGroup_Broadcast_Rank,
364-
ParallelDescriptor::CommunicatorInter(whichSidecar));
365-
366-
int do_analysis_bcast(do_analysis);
367-
ParallelDescriptor::Bcast(&do_analysis_bcast, 1, MPI_IntraGroup_Broadcast_Rank,
368-
ParallelDescriptor::CommunicatorInter(whichSidecar));
369317

370-
#endif // if 0
371318
}
372319
#endif // ifdef REEBER
373320
}

‎Source/nyx_main.cpp

+20-414
Large diffs are not rendered by default.

‎UsersGuide/PostProcessing/NyxPostProcessing.tex

+2-14
Original file line numberDiff line numberDiff line change
@@ -27,19 +27,7 @@ \section{Usage}
2727
that these codes are in separate repositories and are not included with Nyx.
2828

2929
Nyx and AMReX provide the capability for the user to execute an arbitrary
30-
post-processing workflow either \textit{in situ} or in-transit. An \textit{in
30+
post-processing workflow \textit{in situ}. An \textit{in
3131
situ} workflow is one in which all MPI processes evolving the simulation stop
3232
at specified time steps and perform the post-processing before continuing with
33-
the simulation. In-transit means that AMReX creates a disjoint group of MPI
34-
processes (``sidecars'') from the global pool and reserves them exclusively for
35-
post-processing. At specified time steps the group of processes evolving the
36-
simulation will send the necessary data to the sidecar group, and then will
37-
continue with the simulation. The two groups then work independently of one
38-
another on their particular tasks.
39-
40-
To run the post-processing workflow \textit{in situ}, one sets the
41-
\texttt{nSidecars} parameter in the inputs file to \texttt{0}. To run the
42-
workflow in-transit, one sets \texttt{nSidecars > 0}. Note that the sum of all
43-
MPI processes is constant for the duration of the simulation, so whatever
44-
number the user dedicates to post-processing will be subtracted from the number
45-
doing the simulation itself.
33+
the simulation.

0 commit comments

Comments
 (0)
Please sign in to comment.