feat(newton): first newton solver implementation
This commit is contained in:
@@ -4,6 +4,7 @@ module;
|
||||
#include <cstdint>
|
||||
#include <limits>
|
||||
#include <mfem.hpp>
|
||||
#include <utility>
|
||||
|
||||
module mean_field;
|
||||
import :operators.gravity_field;
|
||||
@@ -273,6 +274,18 @@ namespace mean_field::operators {
|
||||
context::gravity_field::GravityFieldPreparationReport GravityFieldOperator::Prepare(
|
||||
const mfem::Vector &state,
|
||||
const context::gravity_field::GravityFieldRevisions &revisions
|
||||
) {
|
||||
auto result = TryPrepare(state, revisions);
|
||||
if (!result.has_value()) {
|
||||
context::gravity_field::throwGravityFieldPreparationRejection(result.error());
|
||||
}
|
||||
return std::move(result).value();
|
||||
}
|
||||
|
||||
context::gravity_field::GravityFieldPreparationResult<context::gravity_field::GravityFieldPreparationReport>
|
||||
GravityFieldOperator::TryPrepare(
|
||||
const mfem::Vector &state,
|
||||
const context::gravity_field::GravityFieldRevisions &revisions
|
||||
) {
|
||||
using form = utils::blocks::gravity_field_form;
|
||||
|
||||
@@ -295,7 +308,7 @@ namespace mean_field::operators {
|
||||
const mfem::Vector gravity_potential =
|
||||
make_read_only_value_view(state, m_state_offsets, gravity_potential_block);
|
||||
|
||||
return m_linearization_context.Prepare(
|
||||
return m_linearization_context.TryPrepare(
|
||||
{.density = density,
|
||||
.displacement = displacement,
|
||||
.gravity_gradient = gravity_gradient,
|
||||
|
||||
Reference in New Issue
Block a user