Example #1
0
        /// <summary>
        /// Initializes m_metric. 
        /// </summary>
        /// <param name="dim">Dimension of space</param>
        public void Init(int dim)
        {
            // create metric matrix
            double[] m = new double[dim * dim];
            for (int i = 0; i < m_metricValue.Count; i++) {
                int idx1 = m_metricBasisVectorIdx1[i];
                int idx2 = m_metricBasisVectorIdx2[i];

                if ((idx1 >= 0) && (idx2 >= 0) && (idx1 < dim) && (idx2 < dim)) {
                    m[idx1 * dim + idx2] = m[idx2 * dim + idx1] = m_metricValue[i];
                }
            }

            // create RefGA.metric
            m_metric = new RefGA.Metric(m);

            // force rounding off when metric is diagonal
            if (m_metric.IsDiagonal())
                m_round = false;

            // if rounding is enabled, round the eigenvalues of the metric.
            if (m_round)
            {
                m_metric = m_metric.RoundEigenMetric(m_roundingEpsilon);
            }
        }
Example #2
0
        /// <summary>
        /// Initializes m_metric. 
        /// </summary>
        /// <param name="dim">Dimension of space</param>
        public void Init(int dim)
        {
            // create metric matrix
            double[] m = new double[dim * dim];
            for (int i = 0; i < m_metricValue.Count; i++) {
                int idx1 = m_metricBasisVectorIdx1[i];
                int idx2 = m_metricBasisVectorIdx2[i];

                if ((idx1 >= 0) && (idx2 >= 0) && (idx1 < dim) && (idx2 < dim)) {
                    m[idx1 * dim + idx2] = m[idx2 * dim + idx1] = m_metricValue[i];
                }
            }

            // create RefGA.metric
            m_metric = new RefGA.Metric(m);

            // force rounding off when metric is diagonal
            if (m_metric.IsDiagonal())
                m_round = false;

            // if rounding is enabled, round the eigenvalues of the metric.
            if (m_round)
            {
                m_metric = m_metric.RoundEigenMetric(m_roundingEpsilon);
            }
        }
Example #3
0
 /// <summary>
 /// Must be called before CompleteFGS(), CheckDepencies() or WriteFunction() is called.
 /// Subclass can override, but if so, must always call superclass version of Init()
 /// </summary>
 /// <param name="S"></param>
 /// <param name="F"></param>
 /// <param name="cgd">Where the generate code goes.</param>
 public virtual void Init(Specification S, G25.fgs F, G25.CG.Shared.CGdata cgd)
 {
     m_specification = S;
     m_fgs = F;
     m_cgd = cgd;
     m_gmv = m_specification.m_GMV;
     m_G25M = m_specification.GetMetric(m_fgs.MetricName);
     m_M = m_G25M.m_metric;
     m_sane = true;
 }