Program Listing for File simulation_parameters.h

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

#ifndef AMICI_SIMULATION_PARAMETERS_H
#define AMICI_SIMULATION_PARAMETERS_H

#include "amici/defines.h"

#include <vector>

namespace amici {

class SimulationParameters {
  public:
    SimulationParameters() = default;

    explicit SimulationParameters(std::vector<realtype> timepoints)
        : ts_(std::move(timepoints)) {}

    SimulationParameters(
        std::vector<realtype> fixedParameters, std::vector<realtype> parameters
    )
        : fixedParameters(std::move(fixedParameters))
        , parameters(std::move(parameters))
        , pscale(std::vector<ParameterScaling>(
              this->parameters.size(), ParameterScaling::none
          )) {}

#ifndef SWIGPYTHON
    /*
     * include/amici/simulation_parameters.h:71: Warning 509: Overloaded method
     * amici::SimulationParameters::SimulationParameters(std::vector<
     * amici::realtype,std::allocator< amici::realtype > >,std::vector<
     * amici::realtype,std::allocator< amici::realtype > >,std::vector<
     * amici::realtype,std::allocator< amici::realtype > >) effectively ignored,
     * include/amici/simulation_parameters.h:54: Warning 509: as it is shadowed
     * by amici::SimulationParameters::SimulationParameters(std::vector<
     * amici::realtype,std::allocator< amici::realtype > >,std::vector<
     * amici::realtype,std::allocator< amici::realtype > >,std::vector<
     * int,std::allocator< int > >).
     */
    SimulationParameters(
        std::vector<realtype> fixedParameters, std::vector<realtype> parameters,
        std::vector<int> plist
    )
        : fixedParameters(std::move(fixedParameters))
        , parameters(std::move(parameters))
        , pscale(std::vector<ParameterScaling>(
              this->parameters.size(), ParameterScaling::none
          ))
        , plist(std::move(plist)) {}

    SimulationParameters(
        std::vector<realtype> timepoints, std::vector<realtype> fixedParameters,
        std::vector<realtype> parameters
    )
        : fixedParameters(std::move(fixedParameters))
        , parameters(std::move(parameters))
        , pscale(std::vector<ParameterScaling>(
              this->parameters.size(), ParameterScaling::none
          ))
        , ts_(std::move(timepoints)) {}
#endif

    void reinitializeAllFixedParameterDependentInitialStatesForPresimulation(
        int nx_rdata
    );

    void reinitializeAllFixedParameterDependentInitialStatesForSimulation(
        int nx_rdata
    );

    void reinitializeAllFixedParameterDependentInitialStates(int nx_rdata);

    std::vector<realtype> fixedParameters;

    std::vector<realtype> fixedParametersPreequilibration;

    std::vector<realtype> fixedParametersPresimulation;

    std::vector<realtype> parameters;

    std::vector<realtype> x0;

    std::vector<realtype> sx0;

    std::vector<ParameterScaling> pscale;

    std::vector<int> plist;

    realtype tstart_{0.0};

    realtype t_presim{0.0};

    std::vector<realtype> ts_;

    bool reinitializeFixedParameterInitialStates{false};

    std::vector<int> reinitialization_state_idxs_presim;

    std::vector<int> reinitialization_state_idxs_sim;
};

bool operator==(SimulationParameters const& a, SimulationParameters const& b);

} // namespace amici

#endif // AMICI_SIMULATION_PARAMETERS_H