예제 #1
0
파일: FEWorld.cs 프로젝트: lulzzz/IvyFEM
        public void UpdateFieldValueValuesFromCoordValues(
            uint valueId, FieldDerivativeType dt, System.Numerics.Complex[] coordValues)
        {
            System.Diagnostics.Debug.Assert(FieldValueArray.IsObjectId(valueId));
            FieldValue fv = FieldValueArray.GetObject(valueId);

            //uint quantityId = fv.QuantityId;
            //uint dof = fv.Dof;
            System.Numerics.Complex[] values = fv.GetComplexValues(dt);
            System.Diagnostics.Debug.Assert(values.Length == coordValues.Length);
            coordValues.CopyTo(values, 0);
        }
예제 #2
0
파일: FEWorld.cs 프로젝트: lulzzz/IvyFEM
        public void UpdateFieldValueValuesFromNodeValues(
            uint valueId, FieldDerivativeType dt, System.Numerics.Complex[] nodeValues)
        {
            System.Diagnostics.Debug.Assert(FieldValueArray.IsObjectId(valueId));
            FieldValue fv         = FieldValueArray.GetObject(valueId);
            uint       quantityId = fv.QuantityId;
            uint       dof        = fv.Dof;

            System.Diagnostics.Debug.Assert(fv.Dof == GetDof(quantityId));
            System.Numerics.Complex[] values = fv.GetComplexValues(dt);
            uint coCnt      = GetCoordCount(quantityId);
            uint offsetNode = 0;

            for (uint qId = 0; qId < quantityId; qId++)
            {
                offsetNode += GetNodeCount(qId) * GetDof(qId);
            }
            for (int coId = 0; coId < coCnt; coId++)
            {
                int nodeId = Coord2Node(quantityId, coId);
                if (nodeId == -1)
                {
                    for (int iDof = 0; iDof < dof; iDof++)
                    {
                        values[coId * dof + iDof] = 0;
                    }
                }
                else
                {
                    for (int iDof = 0; iDof < dof; iDof++)
                    {
                        values[coId * dof + iDof] = nodeValues[offsetNode + nodeId * dof + iDof];
                    }
                }
            }
        }