8 if(Sv.
state().rows() < pstart + plen) {
9 std::stringstream err_msg;
10 err_msg <<
"StateVector is of size: " 12 <<
" not the expected size: " 25 blitz::Range rsub(pstart, pstart + plen - 1);
26 sv_sub.reference(sv_full(rsub));
27 sv_cov_sub.reference(Array<double, 2>(sv_cov_full(rsub, rsub)));
32 update_sub_state(sv_sub, sv_cov_sub);
36 blitz::Array<bool, 1>& Used)
const 38 if(Used.rows() < pstart + plen) {
39 throw Exception(
"StateVector not the expected size");
47 Array<bool, 1> used_sub(Used(blitz::Range(pstart, pstart + plen - 1)));
48 mark_used_sub(used_sub);
53 blitz::Array<std::string, 1>& Sv_name)
const 55 if(Sv_name.rows() < pstart + plen) {
56 throw Exception(
"StateVector not the expected size");
64 Array<std::string, 1> sv_name_sub(Sv_name(blitz::Range(pstart,
66 state_vector_name_sub(sv_name_sub);
void state_vector_observer_initialize(int Plen)
Take the given number of state vector parameters.
const ArrayAd< double, 1 > & state_with_derivative() const
Return the state vector as state() does, but also make each value a AutoDerivative.
const blitz::Array< double, 1 > & state() const
Current state vector.
This is the base of the exception hierarchy for Full Physics code.
virtual void notify_update(const StateVector &Sv)
Called when the Observed object is updated.
const blitz::Array< double, 2 > & state_covariance() const
Current covariance of the state vector.
Apply value function to a blitz array.
This handles informing a set of interested objects when the state vector has updated.
virtual void mark_used(const StateVector &Sv, blitz::Array< bool, 1 > &Used) const
Mark elements that we are actively using (i.e., that aren't ignored).
Contains classes to abstract away details in various Spurr Radiative Transfer software.
#define range_min_check(V, Min)
Range check.
virtual void state_vector_name(const StateVector &Sv, blitz::Array< std::string, 1 > &Sv_name) const
Update any portion of the list of the state vector names that apply to this object.