Following the help of model.param.define function (which is used in a generic manner in all functions which allow defining constraints on the parameters), we can define constraints on each parameter, in all cases.
Let us sayf that such a vocabulary can even be used in the case of several GRF (BiPGS for example). The rank of this GRF is specified as the index of the first keyword (called "G"). If the model is only defined for a single GRF, then this parameter can be suppressed.
The second keyword ("M") if the rank of the basic structure on which the constraint must be applied:
M1 corresponds to the first structure, M2 to the second one, and so on...
Then we must define the type of parameter on which the constraint is defined: it can be the range (R), the anisotropy angle (A), the auxiliary parameter (P) or the sill (V). This keyword is compulsory.
Finally, we must give the rank of the previous parameter. This depends on the parameter type:
- Range: The ranges are defined as a vector of values for all the space dimensions. For example R2 refers to the range along the second direction
- Anisotropy Angle. The angles are defined as a vector of rotation angles, whose dimension is equal to the space dimension (except for 1-D [where there is no rotation] and 2-D [where there is only 1 angle]). Otherwise (say in 3-D) the angles are sorted: around Z, around Y and around X. Then A2 refers to the rotation around Y.
- Sill. This is the most difficult part as the sills are defined through a matrix. Then V1-V2 refers to the sill for the basic structure between variables 1 and 2.
To summarize, if I have a model with three basic structures. if I want to specify a upper bound (equalt o 0.2) to the sill of the basic structure #2 and for variable #3, I would say:
upper = "M2V3-3=0.2".
I hope this help will be helpful. Please also tell me how to improve the help of model.param.define