8 #endif _ARTS_OEM_MPI_H_ 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" 24 using MPIMatrix = invlib::Matrix<invlib::MPIMatrix<invlib::Timer<ArtsMatrix>>>;
27 invlib::MPIMatrix<invlib::Timer<ArtsCovarianceMatrixWrapper>>>;
29 using MPIVector = invlib::Vector<invlib::MPIVector<invlib::Timer<ArtsVector>>>;
37 template <
typename ForwardModel>
43 Formulation::STANDARD>;
46 using 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_)) {}
121 #endif // _ARTS_OEM_MPI_H_ INDEX Index
The type to use for all integer numbers and indices.
invlib::Matrix< invlib::MPIMatrix< invlib::Timer< ArtsCovarianceMatrixWrapper > >> MPICovarianceMatrix
MPI-distributed covariance matrix type.
invlib::MAP< ForwardModel, OEMMatrix, MPICovarianceMatrix, MPICovarianceMatrix, OEMVector, Formulation::STANDARD > OEM_STANDARD_MPI
Distributed OEM standard form.
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.
invlib::LevenbergMarquardt< Numeric, MPISparse, CG > LM_MPI
Distributed Levenberg-Marquardt optimization.
AgendaWrapperMPI(Workspace *ws_, const Agenda *inversion_iterate_agenda, Index m_, Index n_)
OEMVector evaluate(const OEMVector &xi)
Evaluate forward model.
const Agenda * inversion_iterate_agenda_
Pointer to the inversion_iterate_agenda defining the foward model.
MPIMatrix Jacobian(const OEMVector &xi, OEMVector &yi)
Compute Jacobian of forward model.
OEMMatrix local_jacobian_
Process-local part of the Jacobian.
invlib::Matrix< invlib::MPIMatrix< invlib::Timer< ArtsMatrix > >> MPIMatrix
MPI-distributed matrix type based on ARTS built-in dense matrices.
invlib::Matrix< ArtsMatrix > Matrix
invlib wrapper type for ARTS matrices.
Workspace * ws_
Pointer to current workspace.
invlib::Vector< invlib::MPIVector< invlib::Timer< ArtsVector > >> MPIVector
MPI-distributed vector type.