10#include "invlib/algebra.h"
11#include "invlib/algebra/precision_matrix.h"
12#include "invlib/algebra/solvers.h"
13#include "invlib/interfaces/arts_wrapper.h"
14#include "invlib/map.h"
15#include "invlib/mpi/log.h"
16#include "invlib/mpi/mpi_matrix.h"
17#include "invlib/mpi/mpi_vector.h"
18#include "invlib/optimization.h"
19#include "invlib/profiling/timer.h"
24using MPIMatrix = invlib::Matrix<invlib::MPIMatrix<invlib::Timer<ArtsMatrix>>>;
27 invlib::MPIMatrix<invlib::Timer<ArtsCovarianceMatrixWrapper>>>;
29using MPIVector = invlib::Vector<invlib::MPIVector<invlib::Timer<ArtsVector>>>;
37template <
typename ForwardModel>
43 Formulation::STANDARD>;
46using LM_MPI = invlib::LevenbergMarquardt<Numeric, MPISparse, CG>;
59 const unsigned int m,
n;
62 const Agenda *inversion_iterate_agenda,
68 m(static_cast<unsigned int>(m_)),
69 n(static_cast<unsigned int>(n_)) {}
void inversion_iterate_agendaExecute(Workspace &ws, Vector &yf, Matrix &jacobian, const Vector &x, const Index jacobian_do, const Index inversion_iteration_counter, const Agenda &input_agenda)
Interface for distributed ARTS forward model.
OEMMatrix local_jacobian_
Process-local part of the Jacobian.
Workspace * ws_
Pointer to current workspace.
const Agenda * inversion_iterate_agenda_
Pointer to the inversion_iterate_agenda defining the foward model.
OEMVector evaluate(const OEMVector &xi)
Evaluate forward model.
MPIMatrix Jacobian(const OEMVector &xi, OEMVector &yi)
Compute Jacobian of forward model.
AgendaWrapperMPI(Workspace *ws_, const Agenda *inversion_iterate_agenda, Index m_, Index n_)
invlib::MAP< ForwardModel, OEMMatrix, MPICovarianceMatrix, MPICovarianceMatrix, OEMVector, Formulation::STANDARD > OEM_STANDARD_MPI
Distributed OEM standard form.
invlib::LevenbergMarquardt< Numeric, MPISparse, CG > LM_MPI
Distributed Levenberg-Marquardt optimization.
invlib::Matrix< ArtsMatrix > Matrix
invlib wrapper type for ARTS matrices.
invlib::Matrix< invlib::MPIMatrix< invlib::Timer< ArtsCovarianceMatrixWrapper > > > MPICovarianceMatrix
MPI-distributed covariance matrix type.
invlib::Vector< invlib::MPIVector< invlib::Timer< ArtsVector > > > MPIVector
MPI-distributed vector type.
invlib::Matrix< invlib::MPIMatrix< invlib::Timer< ArtsMatrix > > > MPIMatrix
MPI-distributed matrix type based on ARTS built-in dense matrices.