138 { { 0., 0., 0., 0. },
142 { 1./ 2., 1./ 2., 0., 0. },
144 { 5./12., 8./12., -1./12., 0. },
146 { 9./24., 19./24., -5./24., 1./24. } };
150 phase->m_order = order;
152 std::string(
"AdamsMoultonOrder" + std::to_string(phase->m_order));
154 phase->m_numsteps = phase->m_order;
155 phase->m_numstages = 1;
172 phase->m_A[0][0][0] = coefficients[phase->m_order][0];
173 phase->m_B[0][0][0] = coefficients[phase->m_order][0];
176 if (phase->m_order > 1)
178 phase->m_B[0][1][0] = 1.0;
182 phase->m_U[0][0] = 1.0;
183 phase->m_V[0][0] = 1.0;
186 for (
size_t n = 1; n < phase->m_order; ++n)
188 phase->m_U[0][n] = coefficients[phase->m_order][n];
189 phase->m_V[0][n] = coefficients[phase->m_order][n];
193 for (
size_t n = 2; n < phase->m_order; ++n)
195 phase->m_V[n][n - 1] = 1.0;
198 phase->m_numMultiStepValues = 1;
199 phase->m_numMultiStepImplicitDerivs = phase->m_order - 1;
200 phase->m_numMultiStepExplicitDerivs = 0;
202 phase->m_timeLevelOffset[0] = 0;
205 for (
size_t n = 1; n < phase->m_order; ++n)
207 phase->m_timeLevelOffset[n] = n - 1;
210 phase->CheckAndVerify();