Program Listing for File model_state.h

Return to documentation for file (include/amici/model_state.h)

#ifndef AMICI_MODEL_STATE_H
#define AMICI_MODEL_STATE_H

#include "amici/defines.h"
#include "amici/sundials_matrix_wrapper.h"
#include "amici/model_dimensions.h"
#include "amici/misc.h"

#include <vector>

namespace amici {


struct ModelState {
    std::vector<realtype> h;

    std::vector<realtype> total_cl;

    std::vector<realtype> stotal_cl;

    std::vector<realtype> unscaledParameters;

    std::vector<realtype> fixedParameters;

    std::vector<int> plist;
};

inline bool operator==(const ModelState &a, const ModelState &b) {
    return is_equal(a.h, b.h)
           && is_equal(a.total_cl, b.total_cl)
           && is_equal(a.stotal_cl, b.stotal_cl)
           && is_equal(a.unscaledParameters, b.unscaledParameters)
           && is_equal(a.fixedParameters, b.fixedParameters)
           && a.plist == b.plist;
}


struct ModelStateDerived {
    ModelStateDerived() = default;

    explicit ModelStateDerived(ModelDimensions const& dim);

    SUNMatrixWrapper J_;

    SUNMatrixWrapper JB_;

    SUNMatrixWrapper dxdotdw_;

    SUNMatrixWrapper dwdx_;

    SUNMatrixWrapper dwdp_;

    SUNMatrixWrapper M_;

    SUNMatrixWrapper dxdotdp_full;

    SUNMatrixWrapper dxdotdp_explicit;

    SUNMatrixWrapper dxdotdp_implicit;

    SUNMatrixWrapper dxdotdx_explicit;

    SUNMatrixWrapper dxdotdx_implicit;

    SUNMatrixWrapper dx_rdatadx_solver;

    SUNMatrixWrapper dx_rdatadtcl;

    SUNMatrixWrapper dtotal_cldx_rdata;

    AmiVectorArray dxdotdp {0, 0};

    std::vector<SUNMatrixWrapper> dJydy_;

    std::vector<realtype> dJydy_matlab_;

    std::vector<realtype> dJydsigma_;

    std::vector<realtype> dJydx_;

    std::vector<realtype> dJydp_;

    std::vector<realtype> dJzdz_;

    std::vector<realtype> dJzdsigma_;

    std::vector<realtype> dJrzdz_;

    std::vector<realtype> dJrzdsigma_;

    std::vector<realtype> dJzdx_;

    std::vector<realtype> dJzdp_;

    std::vector<realtype> dzdx_;

    std::vector<realtype> dzdp_;

    std::vector<realtype> drzdx_;

    std::vector<realtype> drzdp_;

    std::vector<realtype> dydp_;

    std::vector<realtype> dydx_;

    std::vector<realtype> w_;

    std::vector<realtype> sx_;

    std::vector<realtype> x_rdata_;

    std::vector<realtype> sx_rdata_;

    std::vector<realtype> y_;

    std::vector<realtype> sigmay_;

    std::vector<realtype> dsigmaydp_;

    std::vector<realtype> dsigmaydy_;

    std::vector<realtype> z_;

    std::vector<realtype> rz_;

    std::vector<realtype> sigmaz_;

    std::vector<realtype> dsigmazdp_;

    std::vector<realtype> deltax_;

    std::vector<realtype> deltasx_;

    std::vector<realtype> deltaxB_;

    std::vector<realtype> deltaqB_;

    AmiVector x_pos_tmp_ {0};
};


struct SimulationState{
    realtype t;
    AmiVector x;
    AmiVector dx;
    AmiVectorArray sx;
    ModelState state;
};


} // namespace amici

#endif // AMICI_MODEL_STATE_H