38 objectFile::READ_IF_PRESENT,
39 objectFile::WRITE_ALWAYS),
50 objectFile::READ_IF_PRESENT,
51 objectFile::WRITE_ALWAYS),
61 objectFile::READ_IF_PRESENT,
62 objectFile::WRITE_ALWAYS),
72 objectFile::READ_IF_PRESENT,
73 objectFile::WRITE_ALWAYS),
83 objectFile::READ_IF_PRESENT,
84 objectFile::WRITE_ALWAYS),
101 if(this->
pStruct().allActive())
103 return predictAll(dt, y, dy, this->
pStruct().activeRange());
107 return predictRange(dt, y, dy, this->
pStruct().activePointsMaskD());
120 if(this->
pStruct().allActive())
122 return intAll(dt, y, dy, this->
pStruct().activeRange());
126 return intRange(dt, y, dy, this->
pStruct().activePointsMaskD());
136 y0_.insertSetElement(newIndices, y);
151 auto d_y0 = y0_.deviceVectorAll();
152 auto d_dy0 = dy0_.deviceVectorAll();
153 auto d_dy1 = dy1_.deviceVectorAll();
154 auto d_dy2 = dy2_.deviceVectorAll();
155 auto d_dy3 = dy3_.deviceVectorAll();
157 Kokkos::parallel_for(
158 "AdamsMoulton5::predict",
162 d_y[i] = d_y0[i] + dt*(
163 static_cast<real>(55.0/24.0) * d_dy[i]
164 -
static_cast<real>(59.0/24.0) * d_dy1[i]
165 +
static_cast<real>(37.0/24.0) * d_dy2[i]
166 -
static_cast<real>( 9.0/24.0) * d_dy3[i]);
184 auto d_dy0 = dy0_.deviceVectorAll();
185 auto d_y0 = y0_.deviceVectorAll();
186 auto d_dy1 = dy1_.deviceVectorAll();
187 auto d_dy2 = dy2_.deviceVectorAll();
188 auto d_dy3 = dy3_.deviceVectorAll();
190 Kokkos::parallel_for(
191 "AdamsMoulton5::correct",
194 auto corrct_y = d_y0[i] + dt*(
195 static_cast<real>(251.0/720.0)*d_dy[i]
196 +
static_cast<real>(646.0/720.0)*d_dy0[i]
197 -
static_cast<real>(264.0/720.0)*d_dy1[i]
198 +
static_cast<real>(106.0/720.0)*d_dy2[i]
199 -
static_cast<real>( 19.0/720.0)*d_dy3[i]);