public MultipointConstraint(
            IList <KeyValuePair <uint, CadElementType> > cadIdTypes, Constraint constraint)
        {
            Constraint = constraint;

            foreach (var pair in cadIdTypes)
            {
                uint           cadId       = pair.Key;
                CadElementType cadElemType = pair.Value;
                // Lagrangeの未定乗数は常に1自由度
                var fixedCad = new FieldFixedCad(cadId, cadElemType, FieldValueType.Scalar);
                FixedCads.Add(fixedCad);
            }
        }
Exemple #2
0
        public override void Copy(FieldFixedCad src)
        {
            base.Copy(src);

            ConstFieldFixedCad srcConst = src as ConstFieldFixedCad;

            DoubleValues = null;
            if (srcConst.DoubleValues != null)
            {
                DoubleValues = new double[srcConst.DoubleValues.Length];
                srcConst.DoubleValues.CopyTo(DoubleValues, 0);
            }
            ComplexValues = null;
            if (srcConst.ComplexValues != null)
            {
                ComplexValues = new System.Numerics.Complex[srcConst.ComplexValues.Length];
                srcConst.ComplexValues.CopyTo(ComplexValues, 0);
            }
        }
        public override void Copy(FieldFixedCad src)
        {
            base.Copy(src);

            DistributedFieldFixedCad srcDist = src as DistributedFieldFixedCad;

            CoIds         = new List <int>(srcDist.CoIds);
            DoubleValuess = new List <double[]>();
            foreach (double[] srcValues in srcDist.DoubleValuess)
            {
                double[] values = new double[srcValues.Length];
                srcValues.CopyTo(values, 0);
                DoubleValuess.Add(values);
            }
            ComplexValuess = new List <System.Numerics.Complex[]>();
            foreach (System.Numerics.Complex[] srcValues in srcDist.ComplexValuess)
            {
                System.Numerics.Complex[] values = new System.Numerics.Complex[srcValues.Length];
                srcValues.CopyTo(values, 0);
                ComplexValuess.Add(values);
            }
        }