Skip to content

Commit a569895

Browse files
authored
Merge pull request #394 from JamesMcClung/pr/shock/marder-and-fixes
`psc_shock`: Add `marder_interval` param
2 parents 1ab07cb + 89075a8 commit a569895

1 file changed

Lines changed: 18 additions & 10 deletions

File tree

‎src/psc_shock.cxx‎

Lines changed: 18 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,7 @@ double turb_db2;
6969
double turb_correlation_length;
7070

7171
int out_interval;
72+
int marder_interval;
7273

7374
bool mirror_domain;
7475
std::string turb_method;
@@ -136,6 +137,7 @@ void setupParameters(int argc, char** argv)
136137

137138
int n_writes = inputParams.getOrDefault<int>("n_writes", 100);
138139
out_interval = psc_params.nmax / n_writes;
140+
marder_interval = inputParams.getOrDefault<int>("marder_interval", -1);
139141

140142
mirror_domain = inputParams.getOrDefault<bool>("mirror_domain", false);
141143
turb_method =
@@ -335,7 +337,7 @@ void inject_b_from_potential(MfieldsState& mflds,
335337
auto field_patch = make_Fields3d<dim_xyz>(mflds[p]);
336338
auto vector_potential_patch = make_Fields3d<dim_xyz>(vector_potential[p]);
337339

338-
grid.Foreach_3d(0, 1, [&](int jx, int jy, int jz) {
340+
grid.Foreach_3d(2, 1, [&](int jx, int jy, int jz) {
339341
field_patch(HX, jx, jy, jz) = vector_potential_patch(AZ, jx, jy + 1, jz) -
340342
vector_potential_patch(AZ, jx, jy, jz) -
341343
vector_potential_patch(AY, jx, jy, jz + 1) +
@@ -566,7 +568,11 @@ void inject_turbulence_dense(MfieldsState& mflds)
566568
double kmax = ((Double3)Int3::max(-i3_min, i3_max) * dk_vec).mag();
567569
int nk = kmax / dk + 1;
568570

569-
LOG_INFO("nk = %d, kmax = %f\n", nk, kmax);
571+
int rank;
572+
MPI_Comm_rank(mflds.grid().comm(), &rank);
573+
if (rank == 0) {
574+
LOG_INFO("nk = %d, kmax = %f\n", nk, kmax);
575+
}
570576

571577
auto k_mins = std::vector<double>(nk);
572578
for (int i = 0; i < nk; i++) {
@@ -638,13 +644,15 @@ void inject_turbulence_dense(MfieldsState& mflds)
638644

639645
void initializeFields(MfieldsState& mflds)
640646
{
641-
if (turb_method == "alfven_dense") {
642-
inject_turbulence_dense(mflds);
643-
} else if (turb_method == "noise_gabor") {
644-
GaborKernel kernel;
645-
inject_turbulence_noise(mflds, kernel);
646-
} else {
647-
LOG_ERROR("Unrecognized turbulence method: %s\n", turb_method.c_str());
647+
if (turb_db2 > 0.0) {
648+
if (turb_method == "alfven_dense") {
649+
inject_turbulence_dense(mflds);
650+
} else if (turb_method == "noise_gabor") {
651+
GaborKernel kernel;
652+
inject_turbulence_noise(mflds, kernel);
653+
} else {
654+
LOG_ERROR("Unrecognized turbulence method: %s\n", turb_method.c_str());
655+
}
648656
}
649657

650658
add_background_fields(mflds);
@@ -697,7 +705,7 @@ static void run(int argc, char** argv)
697705
double marder_diffusion = 0.9;
698706
int marder_loop = 3;
699707
bool marder_dump = false;
700-
psc_params.marder_interval = -1;
708+
psc_params.marder_interval = marder_interval;
701709
Marder marder(grid, marder_diffusion, marder_loop, marder_dump);
702710

703711
// ----------------------------------------------------------------------

0 commit comments

Comments
 (0)