Skip to content

Commit 5a3e7f6

Browse files
fix errors
1 parent d86bf7d commit 5a3e7f6

3 files changed

Lines changed: 36 additions & 31 deletions

File tree

setups/srpic/1d_polar_cap/1d_polar_cap.toml

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@
44
runtime = 60.0
55

66
[grid]
7-
resolution = 2048
8-
extent = [[0.0, 100.0]]
7+
resolution = 500
8+
extent = [[0.0, 1.0]]
99

1010
[grid.metric]
1111
metric = "minkowski"
@@ -25,7 +25,7 @@
2525
ds = 2.0
2626

2727
[scales]
28-
larmor0 = 2e-5
28+
larmor0 = 1e-4
2929
skindepth0 = 0.01
3030

3131
[algorithms]
@@ -58,8 +58,12 @@
5858
pusher = "Boris,GCA"
5959

6060
[setup]
61-
Bsurf = 1.0
61+
B0 = 1.0
6262
period = 1.0
63+
R = 1.0
64+
jff = 1.0
65+
angle = 0.0
66+
theta = 0.0
6367

6468
[output]
6569
format = "hdf5"

setups/srpic/1d_polar_cap/pgen.hpp

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ namespace user {
1515

1616
template <Dimension D>
1717
struct InitFields {
18-
InitFields(real_t b0, real_t angle, real_t rho) : b0 { b0 }, angle { angle }, rho { rho } {}
18+
InitFields(real_t b0, real_t angle) : b0 { b0 }, angle { angle } {}
1919

2020
Inline auto bx1(const coord_t<D>& x_Ph) const -> real_t {
2121
return b0 * math::cos(angle);
@@ -26,23 +26,23 @@ namespace user {
2626
}
2727

2828
Inline auto ex1(const coord_t<D>& x_Ph) const -> real_t {
29-
return rho * x_Ph[0];
29+
return x_Ph[0];
3030
}
3131

3232
private:
33-
const real_t b0, angle, rho;
33+
const real_t b0, angle;
3434
};
3535

3636
template <Dimension D>
3737
struct MFields {
3838
MFields(real_t b0, real_t angle) : b0 { b0 }, angle { angle } {}
3939

4040
Inline auto bx1(const coord_t<D>& x_Ph) const -> real_t {
41-
return b0 * math::cos(angle);
41+
return -b0 * math::cos(angle);
4242
}
4343

4444
Inline auto bx2(const coord_t<D>& x_Ph) const -> real_t {
45-
return b0 * math::sin(angle);
45+
return -b0 * math::sin(angle);
4646
}
4747

4848
private:
@@ -52,7 +52,7 @@ namespace user {
5252
template <Dimension D>
5353
struct DriveFields : public InitFields<D> {
5454
DriveFields(real_t time, real_t b0, real_t angle, real_t omega, real_t r, real_t theta)
55-
: InitFields<D> { b0, angle }
55+
: InitFields<D> { b0, angle}
5656
, time { time }
5757
, Omega { omega }
5858
, R { r }
@@ -95,7 +95,7 @@ namespace user {
9595
using arch::ProblemGenerator<S, M>::C;
9696
using arch::ProblemGenerator<S, M>::params;
9797

98-
const real_t B0, angle, R, Omega, rho, theta, skin0, larmor0;
98+
const real_t B0, angle, R, Omega, theta, skin0, larmor0;
9999
InitFields<D> init_flds;
100100

101101
inline PGen(const SimulationParams& p, const Metadomain<S, M>& m)
@@ -108,13 +108,12 @@ namespace user {
108108
, theta { p.template get<real_t>("setup.theta", ZERO) }
109109
, skin0 { p.template get<real_t>("scales.skindepth0") }
110110
, larmor0 { p.template get<real_t>("scales.larmor0") }
111-
, rho { TWO * B0 * Omega * SQR(skin0) / larmor0}
112-
, init_flds { B0, angle, rho} {}
111+
, init_flds { B0, angle} {}
113112

114113
inline PGen() {}
115114

116115
auto AtmFields(real_t time) const -> DriveFields<D> {
117-
return DriveFields<D> { time, B0, angle, Omega, R, theta};
116+
return DriveFields<D> { time, B0, angle, Omega, R, theta };
118117
}
119118

120119
auto MatchFields(real_t) const -> MFields<D> {

src/engines/srpic.hpp

Lines changed: 19 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -81,8 +81,6 @@ namespace ntt {
8181
"algorithms.toggles.deposit");
8282
const auto clear_interval = m_params.template get<std::size_t>(
8383
"particles.clear_interval");
84-
const auto force_free = m_params.template get<bool>(
85-
"setup.force_free");
8684

8785
if (step == 0) {
8886
// communicate fields and apply BCs on the first timestep
@@ -115,20 +113,22 @@ namespace ntt {
115113
timers.start("CurrentDeposit");
116114
Kokkos::deep_copy(dom.fields.cur, ZERO);
117115
CurrentsDeposit(dom);
118-
if constexpr (force_free) {
119-
auto jff = m_params.template get<real_t>("setup.jff");
120-
auto skin0 = m_params.template get<real_t>("scales.skin0");
121-
auto larmor0 = m_params.template get<real_t>("scales.larmor0");
122-
auto B0 = m_params.template get<real_t>("setup.B0");
123-
auto Omega = static_cast<real_t>(constant::TWO_PI) / m_params.template get<real_t>("setup.period", ONE)
124-
jff *= TWO * B0 * Omega * SQR(skin0) / larmor0;
125-
Kokkos::parallel_for("FFCurrentCorrection",
126-
dom.mesh.ExtentToRange(dom.mesh.extent(in::x1), {false, true}),
127-
[](const size_t i){
128-
dom.fields.cur.access(i, cur::jx1) -= jff;
129-
}
130-
)
131-
}
116+
// {
117+
// auto jff = m_params.template get<real_t>("setup.jff");
118+
// auto skin0 = m_params.template get<real_t>("scales.skin0");
119+
// auto larmor0 = m_params.template get<real_t>("scales.larmor0");
120+
// auto B0 = m_params.template get<real_t>("setup.B0");
121+
// auto Omega = static_cast<real_t>(constant::TWO_PI) / m_params.template get<real_t>("setup.period", ONE);
122+
// auto j = Kokkos::Experimental::create_scatter_view(dom.fields.cur);
123+
// Kokkos::deep_copy(j, dom.fields.cur);
124+
// Kokkos::parallel_for("FFCurrentCorrection",
125+
// dom.mesh.rangeActiveCells(),
126+
// [&j, jff](const size_t i){
127+
// j.access(i, cur::jx1) -= jff;
128+
// }
129+
// );
130+
// Kokkos::deep_copy(dom.fields.cur, j);
131+
// }
132132
timers.stop("CurrentDeposit");
133133

134134
timers.start("Communications");
@@ -545,14 +545,16 @@ namespace ntt {
545545
if constexpr (M::CoordType == Coord::Cart) {
546546
// minkowski case
547547
const auto V0 = m_params.template get<real_t>("scales.V0");
548+
const auto jff = m_params.template get<real_t>("setup.jff");
548549

549550
Kokkos::parallel_for(
550551
"Ampere",
551552
domain.mesh.rangeActiveCells(),
552553
kernel::mink::CurrentsAmpere_kernel<M::Dim>(domain.fields.em,
553554
domain.fields.cur,
554555
coeff / V0,
555-
ONE / n0));
556+
ONE / n0,
557+
jff));
556558
} else {
557559
auto range = range_with_axis_BCs(domain);
558560
const auto ni2 = domain.mesh.n_active(in::x2);

0 commit comments

Comments
 (0)