• Alexis SALZMAN's avatar
    [xFEM] add new xValueLinearCombinationParam concept · 135c3fc5
    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