#' @param type constant indicating the model of correlation function
#' @description Function to set up D-variate variogram models based on model type, the variogram parameters sill and nugget and a matrix describing the anisotropy of the range.
#' @param nugget (DxD)-matrix for the nugget effect
#'
#' @param type model of correlation function. The function expects a constant, e.g. the internal constants 'vg.Gau' for Gaussian model or 'vg.Exp'. for exponential models. See examples for usage.
#' @param nugget (DxD)-matrix for the nugget effect. Default is a muted nugget (0).
#' @param sill (DxD)-matrix for the partial sills of the correlation function
#' @param sill (DxD)-matrix for the partial sills of the correlation function
#' @param anisRanges 2x2 or 3x3 matrix of ranges (see details)
#' @param anisRanges 2x2 or 3x3 matrix of ranges (see details)
#' @param extraPar for certain correlation functions, extra parameters (smoothness, period, etc)
#' @param extraPar for certain correlation functions, extra parameters (smoothness, period, etc)
#'
#'
#' @return an object of class "gmCgram" containing the linear model of corregionalization
#' @return an object of class "gmCgram" containing the linear model of corregionalization
#' of the nugget and the structure given.
#' of the nugget and the structure given.
#' @details The argument `type` must be an integer indicating the model to be used.
#' @details The argument `type` must be an integer indicating the model to be used.
#' Some constants are available to make reading code more understandable. That is, you can
#' Some constants are available to make reading code more understandable. That is, you can
#' either write `1`, `vg.Sph` or `vg.Spherical`, they will all work and produce
#' either write `1`, `vg.sph`, `vg.Sph` or `vg.Spherical`, they will all work and produce
#' a spherical model. The same applies for the following models: `vg.Gauss=0`;
#' a spherical model. The same applies for the following models:
#' `vg.Exp=vg.Exponential=2`. These constants are available after calling
#' `vg.Gauss = vg.Gau = vg.gau = 0`;
#' `data("variogramModels")`.
#' `vg.Exponential = vg.Exp = vg. exp = 2`.
#' No other model is currently available, but this data object will be
#' These constants are available after calling `data("variogramModels")`.
#' No other model is currently available, but this data object will be
#' regularly updated.
#' regularly updated.
#' The constant vector `gsi.validModels` contains all currently valid models.
#' The constant vector `gsi.validModels` contains all currently valid models.
#'
#'
#' Argument `anisRange` expects a matrix $M$ such that
#' Argument `anisRange` expects a matrix $M$ such that