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