-
Alexis SALZMAN authored
From A.S and N.M. work. This commit create a new linear combination concept where coefficients are themselves depending on value: VAL= sum_i c_i v_i w_i + sum_k c_k*v_k +b where v_i, v_k are the master values in the relation. i.e. the ones on which VAL depends c_i,c_k are the fixed coefficients of the linear relation. b is a constant w_i is a set of parametric values that are used as extra coefficients tuning the final linear relation. When getting the numeric value of VAL all w_i,v_i and v_k are interrogated to compute VAL. This linear combination concept behave the same way as xValueLinearCombination when integrating. I.e. elementary matrix terms linked to VAL are dispatched other the master values (v_i,v_k) location of the global matrix taking into account the c_i, c_k and the current w_i values. In term of implementation w_i are of same type as v_i,v_k (xValue<VT> type) Some test show that v_i,v_k, w_i can be stored in the same xValueManagerDist<VT> container or not .... Especially w_i can even be individual object managed by the user ... But the most natural way to create those parameters is through the use of a specif field that drive linear relation. If i-set is empty the xValueLinearCombinationParam instance is equivalent to xValueLinearCombination. Both xValueLinearCombinationParam and xValueLinearCombination are now deriving from a xValueLinearCombinationBase. This way state of values for both are the same xStateOfValueLinearCombination that store a pointer to xValueLinearCombinationBase. Then polymorphism make getCoeff correct for both concept. A dedicate test case will be committed soon to illustrate this new concept. During this commit some file movement/creation have been done to put implementations in _imp.h files.
135c3fc5