Пример #1
0
 private bool IsMemberDOFRigid(bool[] bNodeDOF, ArrayList iMemberCollection, CNRelease NRelease, e3D_DOF eDOF)
 {
     if (NRelease == null) // No release at point - support restraints are governing
         if (iMemberCollection == null || iMemberCollection.Count == 1) // None or just one FEM Member is connected, means free end - support DOF are governing
             return bNodeDOF[(int)eDOF];
         else // Node is connected to two or more members, releases are necessary to define DOF
             return true; // Two members connection is rigid as default if no release exists
     else
     {
         // Some release exists
         if (iMemberCollection == null || iMemberCollection.Count == 1) // None or just one FEM Member is connected, means free end
         {
             // default Node DOF are false, therefore it is always false if no support exist in node
             if (bNodeDOF[(int)eDOF] == true && NRelease.m_bRestrain[(int)eDOF] == true)
                 return true;
             else
                 return false;
         }
         else
         {
             // More members is connected, do not take into account nodal support, just member releases
             if (NRelease.m_bRestrain[(int)eDOF] == true) // Release DOF rigid restraint exist and is ridig
                 return true;
             else
                 return false;
         }
     }
 }
Пример #2
0
        private FEM_CALC_BASE.Enums.EElemSuppType2D Get_iElemSuppType2D_Part_UR(e3D_DOF eDOF_U, e3D_DOF eDOF_R)
        {
            // Is DOF rigid?
            // true - 1 - yes, it is
            // false - 0 - no, it isnt
            // true - 1 restraint (infinity rigidity) / false - 0 - free (zero rigidity)

            if (
            IsMemberDOFRigid(NodeStart.m_ArrNodeDOF, NodeStart.m_iMemberCollection, Member.CnRelease1, eDOF_U) &&
            IsMemberDOFRigid(NodeStart.m_ArrNodeDOF, NodeStart.m_iMemberCollection, Member.CnRelease1, eDOF_R) &&
            IsMemberDOFRigid(NodeEnd.m_ArrNodeDOF, NodeEnd.m_iMemberCollection, Member.CnRelease2, eDOF_U) &&
            IsMemberDOFRigid(NodeEnd.m_ArrNodeDOF, NodeEnd.m_iMemberCollection, Member.CnRelease2, eDOF_R)
            )
            {
                // 00_00
                return FEM_CALC_BASE.Enums.EElemSuppType2D.eEl_00_00;
            }
            else if
            (
            IsMemberDOFRigid(NodeStart.m_ArrNodeDOF, NodeStart.m_iMemberCollection, Member.CnRelease1, eDOF_U) &&
            IsMemberDOFRigid(NodeStart.m_ArrNodeDOF, NodeStart.m_iMemberCollection, Member.CnRelease1, eDOF_R) &&
            !IsMemberDOFRigid(NodeEnd.m_ArrNodeDOF, NodeEnd.m_iMemberCollection, Member.CnRelease2, eDOF_U) &&
            !IsMemberDOFRigid(NodeEnd.m_ArrNodeDOF, NodeEnd.m_iMemberCollection, Member.CnRelease2, eDOF_R)
            )
            {
                // 00 _ __
                return FEM_CALC_BASE.Enums.EElemSuppType2D.eEl_00___;
            }
            else if
            (
            !IsMemberDOFRigid(NodeStart.m_ArrNodeDOF, NodeStart.m_iMemberCollection, Member.CnRelease1, eDOF_U) &&
            !IsMemberDOFRigid(NodeStart.m_ArrNodeDOF, NodeStart.m_iMemberCollection, Member.CnRelease1, eDOF_R) &&
            IsMemberDOFRigid(NodeEnd.m_ArrNodeDOF, NodeEnd.m_iMemberCollection, Member.CnRelease2, eDOF_U) &&
            IsMemberDOFRigid(NodeEnd.m_ArrNodeDOF, NodeEnd.m_iMemberCollection, Member.CnRelease2, eDOF_R)
            )
            {
                // __ _ 00
                return FEM_CALC_BASE.Enums.EElemSuppType2D.eEl____00;
            }
            else if
            (
            IsMemberDOFRigid(NodeStart.m_ArrNodeDOF, NodeStart.m_iMemberCollection, Member.CnRelease1, eDOF_U) &&
            IsMemberDOFRigid(NodeStart.m_ArrNodeDOF, NodeStart.m_iMemberCollection, Member.CnRelease1, eDOF_R) &&
            IsMemberDOFRigid(NodeEnd.m_ArrNodeDOF, NodeEnd.m_iMemberCollection, Member.CnRelease2, eDOF_U) &&
            !IsMemberDOFRigid(NodeEnd.m_ArrNodeDOF, NodeEnd.m_iMemberCollection, Member.CnRelease2, eDOF_R)
            )
            {
                // 00 _ 0_
                return FEM_CALC_BASE.Enums.EElemSuppType2D.eEl_00_0_;
            }
            else if
            (
            IsMemberDOFRigid(NodeStart.m_ArrNodeDOF, NodeStart.m_iMemberCollection, Member.CnRelease1, eDOF_U) &&
            !IsMemberDOFRigid(NodeStart.m_ArrNodeDOF, NodeStart.m_iMemberCollection, Member.CnRelease1, eDOF_R) &&
            IsMemberDOFRigid(NodeEnd.m_ArrNodeDOF, NodeEnd.m_iMemberCollection, Member.CnRelease2, eDOF_U) &&
            IsMemberDOFRigid(NodeEnd.m_ArrNodeDOF, NodeEnd.m_iMemberCollection, Member.CnRelease2, eDOF_R)
            )
            {
                // 0_ _ 00
                return FEM_CALC_BASE.Enums.EElemSuppType2D.eEl_0__00;
            }
            else if
            (
            IsMemberDOFRigid(NodeStart.m_ArrNodeDOF, NodeStart.m_iMemberCollection, Member.CnRelease1, eDOF_U) &&
            IsMemberDOFRigid(NodeStart.m_ArrNodeDOF, NodeStart.m_iMemberCollection, Member.CnRelease1, eDOF_R) &&
            !IsMemberDOFRigid(NodeEnd.m_ArrNodeDOF, NodeEnd.m_iMemberCollection, Member.CnRelease2, eDOF_U) &&
            IsMemberDOFRigid(NodeEnd.m_ArrNodeDOF, NodeEnd.m_iMemberCollection, Member.CnRelease2, eDOF_R)
            )
            {
                // 00 _ _0
                return FEM_CALC_BASE.Enums.EElemSuppType2D.eEl_00__0;
            }
            else if
            (
            !IsMemberDOFRigid(NodeStart.m_ArrNodeDOF, NodeStart.m_iMemberCollection, Member.CnRelease1, eDOF_U) &&
            IsMemberDOFRigid(NodeStart.m_ArrNodeDOF, NodeStart.m_iMemberCollection, Member.CnRelease1, eDOF_R) &&
            IsMemberDOFRigid(NodeEnd.m_ArrNodeDOF, NodeEnd.m_iMemberCollection, Member.CnRelease2, eDOF_U) &&
            IsMemberDOFRigid(NodeEnd.m_ArrNodeDOF, NodeEnd.m_iMemberCollection, Member.CnRelease2, eDOF_R)
            )
            {
                // _0 _ 00
                return FEM_CALC_BASE.Enums.EElemSuppType2D.eEl__0_00;
            }
            else if
            (
            IsMemberDOFRigid(NodeStart.m_ArrNodeDOF, NodeStart.m_iMemberCollection, Member.CnRelease1, eDOF_U) &&
            !IsMemberDOFRigid(NodeStart.m_ArrNodeDOF, NodeStart.m_iMemberCollection, Member.CnRelease1, eDOF_R) &&
            IsMemberDOFRigid(NodeEnd.m_ArrNodeDOF, NodeEnd.m_iMemberCollection, Member.CnRelease2, eDOF_U) &&
            !IsMemberDOFRigid(NodeEnd.m_ArrNodeDOF, NodeEnd.m_iMemberCollection, Member.CnRelease2, eDOF_R)
            )
            {
                // 0_ _ 0_
                return FEM_CALC_BASE.Enums.EElemSuppType2D.eEl_0__0_;
            }
            else if
            (
            !IsMemberDOFRigid(NodeStart.m_ArrNodeDOF, NodeStart.m_iMemberCollection, Member.CnRelease1, eDOF_U) &&
            IsMemberDOFRigid(NodeStart.m_ArrNodeDOF, NodeStart.m_iMemberCollection, Member.CnRelease1, eDOF_R) &&
            !IsMemberDOFRigid(NodeEnd.m_ArrNodeDOF, NodeEnd.m_iMemberCollection, Member.CnRelease2, eDOF_U) &&
            IsMemberDOFRigid(NodeEnd.m_ArrNodeDOF, NodeEnd.m_iMemberCollection, Member.CnRelease2, eDOF_R)
            )
            {
                // _0 _ _0
                return FEM_CALC_BASE.Enums.EElemSuppType2D.eEl__0__0;
            }
            else if
            (
            IsMemberDOFRigid(NodeStart.m_ArrNodeDOF, NodeStart.m_iMemberCollection, Member.CnRelease1, eDOF_U) &&
            !IsMemberDOFRigid(NodeStart.m_ArrNodeDOF, NodeStart.m_iMemberCollection, Member.CnRelease1, eDOF_R) &&
            !IsMemberDOFRigid(NodeEnd.m_ArrNodeDOF, NodeEnd.m_iMemberCollection, Member.CnRelease2, eDOF_U) &&
            !IsMemberDOFRigid(NodeEnd.m_ArrNodeDOF, NodeEnd.m_iMemberCollection, Member.CnRelease2, eDOF_R)
            )
            {
                // 0_ _ __
                return FEM_CALC_BASE.Enums.EElemSuppType2D.eEl_0____;
            }
            else if
            (
            IsMemberDOFRigid(NodeStart.m_ArrNodeDOF, NodeStart.m_iMemberCollection, Member.CnRelease1, eDOF_U) &&
            !IsMemberDOFRigid(NodeStart.m_ArrNodeDOF, NodeStart.m_iMemberCollection, Member.CnRelease1, eDOF_R) &&
            !IsMemberDOFRigid(NodeEnd.m_ArrNodeDOF, NodeEnd.m_iMemberCollection, Member.CnRelease2, eDOF_U) &&
            !IsMemberDOFRigid(NodeEnd.m_ArrNodeDOF, NodeEnd.m_iMemberCollection, Member.CnRelease2, eDOF_R)
            )
            {
                // __ _ 0_
                return FEM_CALC_BASE.Enums.EElemSuppType2D.eEl____0_;
            }
            else if
            (
            IsMemberDOFRigid(NodeStart.m_ArrNodeDOF, NodeStart.m_iMemberCollection, Member.CnRelease1, eDOF_U) &&
            !IsMemberDOFRigid(NodeStart.m_ArrNodeDOF, NodeStart.m_iMemberCollection, Member.CnRelease1, eDOF_R) &&
            !IsMemberDOFRigid(NodeEnd.m_ArrNodeDOF, NodeEnd.m_iMemberCollection, Member.CnRelease2, eDOF_U) &&
            !IsMemberDOFRigid(NodeEnd.m_ArrNodeDOF, NodeEnd.m_iMemberCollection, Member.CnRelease2, eDOF_R)
            )
            {
                // _0 _ __
                return FEM_CALC_BASE.Enums.EElemSuppType2D.eEl__0___;
            }
            else if
            (
            IsMemberDOFRigid(NodeStart.m_ArrNodeDOF, NodeStart.m_iMemberCollection, Member.CnRelease1, eDOF_U) &&
            !IsMemberDOFRigid(NodeStart.m_ArrNodeDOF, NodeStart.m_iMemberCollection, Member.CnRelease1, eDOF_R) &&
            !IsMemberDOFRigid(NodeEnd.m_ArrNodeDOF, NodeEnd.m_iMemberCollection, Member.CnRelease2, eDOF_U) &&
            !IsMemberDOFRigid(NodeEnd.m_ArrNodeDOF, NodeEnd.m_iMemberCollection, Member.CnRelease2, eDOF_R)
            )
            {
                // __ _ _0
                return FEM_CALC_BASE.Enums.EElemSuppType2D.eEl_____0;
            }
            else
            {
                // __ _ __  // Not supported member !!!  or other not implemented restraint conditions
                return FEM_CALC_BASE.Enums.EElemSuppType2D.eEl______;
            }
        }