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); } }
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); } }