Exemple #1
0
 // Singular Load
 void GetEIF_0__00_11_UV(CMLoad_11 Load, float fL, out float fA, out float fB, out float fMa, out float fMb)
 {
     float fb = fL - Load.Fa;
     fA = ((Load.FF * MathF.Pow2(fb)) / (2f*MathF.Pow3(fL)))* (2f*fL + Load.Fa);
     fB = Load.FF * Load.Fa / (2 * MathF.Pow3(fL)) * (3f * MathF.Pow2(fL) - MathF.Pow2(Load.Fa));
     fMa = 0f;
     fMb = (Load.FF * Load.Fa * fb / (2 * MathF.Pow2(fL))) * (Load.Fa + fL);
 }
Exemple #2
0
 // Singular Load
 void GetEIF_0__0__11_UV(CMLoad_11 Load, float fL, out float fA, out float fB, out float fMa, out float fMb)
 {
     float fb = fL - Load.Fa;
     fA = Load.FF * fb / fL;
     fB = Load.FF * Load.Fa / fL;
     fMa = fMb = 0f;
 }
Exemple #3
0
 void GetEIF_00____11_XX(CMLoad_11 Load, float fL, out float fA, out float fB)
 {
     fA = Load.FF;
     fB = 0.0f;
 }
Exemple #4
0
 // Singular Load
 void GetEIF_00_00_11_UV(CMLoad_11 Load, float fL, out float fA, out float fB, out float fMa, out float fMb)
 {
     fA = Load.FF * (float)Math.Pow(fL - Load.Fa, 2) / (float)Math.Pow(fL, 3) * (fL + 2f * Load.Fa);
     fB = Load.FF * (float)Math.Pow(Load.Fa, 2) / (float)Math.Pow(fL, 3) * (fL + 2f * (fL - Load.Fa));
     fMa = -Load.FF * Load.Fa * (float)Math.Pow(fL - Load.Fa, 2) / (float)Math.Pow(fL, 2);
     fMb = Load.FF * (float)Math.Pow(Load.Fa, 2) * (fL - Load.Fa) / (float)Math.Pow(fL, 2);
 }
Exemple #5
0
 void GetMLoadPart_11(CMLoad_11 Load, CE_1D_BASE Member, FEM_CALC_BASE.Enums.EElemSuppType2D eMType, out float fA, out float fB)
 {
     switch (eMType)
     {
         case Enums.EElemSuppType2D.eEl_00_00: // Both Side restrained against axial direction displacement
         case Enums.EElemSuppType2D.eEl_00_0_:
         case Enums.EElemSuppType2D.eEl_0__00:
         case Enums.EElemSuppType2D.eEl_0__0_:
             {
                 GetEIF_00_00_11_XX(Load, Member.FLength, out fA, out fB);
                 return;
             }
         case Enums.EElemSuppType2D.eEl_00___:
             {
                 GetEIF_00____11_XX(Load, Member.FLength, out fA, out fB);
                 return;
             }
         case Enums.EElemSuppType2D.eEl____00:
             {
                 GetEIF____00_11_XX(Load, Member.FLength, out fA, out fB);
                 return;
             }
         default:
             {
                 // Exception
                 fA = fB = 0.0f;
                 return;
             }
     }
 }
Exemple #6
0
 void GetEIF_00_00_11_XX(CMLoad_11 Load, float fL, out float fA, out float fB)
 {
     fA = Load.FF * (float)Math.Pow(fL - Load.Fa, 2) / (float)Math.Pow(fL, 3) * (fL + 2f * Load.Fa);
     fB = Load.FF * (float)Math.Pow(Load.Fa, 2) / (float)Math.Pow(fL, 3) * (fL + 2f * (fL - Load.Fa));
 }
Exemple #7
0
 void GetEIF____00_11_UV(CMLoad_11 Load, float fL, out float fA, out float fB, out float fMa, out float fMb)
 {
     fA = fB = 0.0f;
     fMa = 0.0f;
     fMb = -Load.FF;
 }
Exemple #8
0
 void GetEIF____00_11_XX(CMLoad_11 Load, float fL, out float fMa, out float fMb)
 {
     fMa = 0.0f;
     fMb = Load.FF; // Sign ??
 }
Exemple #9
0
 void GetEIF_0__00_11_UV(CMLoad_11 Load, float fL, out float fA, out float fB, out float fMa, out float fMb)
 {
     fA = -3f / 2f * ((MathF.Pow2(fL) - MathF.Pow2(Load.Fa)) / MathF.Pow3(fL)) * Load.FF;
     fB = -fA;
     fMa = 0f;
     fMb = (Load.FF / (2 * MathF.Pow2(fL))) * (MathF.Pow2(fL) - 3 * MathF.Pow2(Load.Fa));
 }
Exemple #10
0
 void GetEIF_0__0__11_UV(CMLoad_11 Load, float fL, out float fA, out float fB, out float fMa, out float fMb)
 {
     fA = -Load.FF / fL;
     fB = -fA;
     fMa = fMb = 0f;
 }
Exemple #11
0
 void GetEIF_00_0__11_UV(CMLoad_11 Load, float fL, out float fA, out float fB, out float fMa, out float fMb)
 {
     float fb = fL - Load.Fa;
     fA = -3f / 2f * ((MathF.Pow2(fL) - MathF.Pow2(fb)) / MathF.Pow3(fL)) * Load.FF;
     fB = -fA;
     fMa = -(Load.FF / (2 * MathF.Pow2(fL))) * (MathF.Pow2(fL) - 3 * MathF.Pow2(fb));
     fMb = 0.0f;
 }
Exemple #12
0
 void GetEIF_00____11_XX(CMLoad_11 Load, float fL, out float fMa, out float fMb)
 {
     fMa = Load.FF;
     fMb = 0.0f;
 }
Exemple #13
0
 void GetEIF_00_00_11_XX(CMLoad_11 Load, float fL, out float fMa, out float fMb)
 {
     fMa = Load.FF / 2.0f;
     fMb = fMa;
 }
Exemple #14
0
 void GetEIF____00_11_UV(CMLoad_11 Load, float fL, out float fA, out float fB, out float fMa, out float fMb)
 {
     // Temporary
     fA = 0.0f;
     fB = 0.0f;
     fMa = 0.0f;
     fMb = 0.0f;
 }
Exemple #15
0
 void GetEIF_00_00_11_UV(CMLoad_11 Load, float fL, out float fA, out float fB, out float fMa, out float fMb)
 {
     fA = -6 * Load.FF / (float)Math.Pow(fL, 3) * Load.Fa * (fL - Load.Fa);
     fB = -fA; /*6 * Load.FM / (float)Math.Pow(fL, 3) * Load.Fa * (fL - Load.Fa);*/
     fMa = -Load.FF * (fL - Load.Fa) / (float)Math.Pow(fL, 2) * (2 * fL - 3 * (fL - Load.Fa));
     fMb = -Load.FF * Load.Fa / (float)Math.Pow(fL, 2) * (2 * fL - 3 * Load.Fa);
 }
Exemple #16
0
 void GetMLoadPart_11(CMLoad_11 Load, CE_1D_BASE Member, FEM_CALC_BASE.Enums.EElemSuppType2D eMType, out float fA, out float fB, out float fMa, out float fMb)
 {
     switch (eMType)
     {
         case Enums.EElemSuppType2D.eEl_00_00: // Both Side restrained
             {
                 GetEIF_00_00_11_UV(Load, Member.FLength, out fA, out fB, out fMa, out fMb);
                 return;
             }
         case Enums.EElemSuppType2D.eEl_00_0_:
             {
                 GetEIF_00_0__11_UV(Load, Member.FLength, out fA, out fB, out fMa, out fMb);
                 return;
             }
         case Enums.EElemSuppType2D.eEl_0__00:
             {
                 GetEIF_0__00_11_UV(Load, Member.FLength, out fA, out fB, out fMa, out fMb);
                 return;
             }
         case Enums.EElemSuppType2D.eEl_0__0_:
             {
                 GetEIF_0__0__11_UV(Load, Member.FLength, out fA, out fB, out fMa, out fMb);
                 return;
             }
         case Enums.EElemSuppType2D.eEl_00___:
             {
                 GetEIF_00____11_UV(Load, Member.FLength, out fA, out fB, out fMa, out fMb);
                 return;
             }
         case Enums.EElemSuppType2D.eEl____00:
             {
                 GetEIF____00_11_UV(Load, Member.FLength, out fA, out fB, out fMa, out fMb);
                 return;
             }
         default:
             {
                 // Exception
                 fA = fB = fMa = fMb = 0.0f;
                 return;
             }
     }
 }
Exemple #17
0
        public CExample_2D_11()
        {
            m_eSLN = ESLN.e2DD_1D; // 1D members in 2D model
            m_eNDOF = (int)ENDOF.e2DEnv; // DOF in 2D
            m_eGCS = EGCS.eGCSLeftHanded; // Global coordinate system

            m_arrNodes = new BaseClasses.CNode[5];
            m_arrMembers = new CMember[4];
            m_arrMat = new CMat_00[1];
            m_arrCrSc = new CRSC.CCrSc[1];
            m_arrNSupports = new BaseClasses.CNSupport[3];
            m_arrNReleases = new BaseClasses.CNRelease[1];
            m_arrNLoads = new BaseClasses.CNLoad[1];
            m_arrMLoads = new BaseClasses.CMLoad[4];
            m_arrLoadCases = new BaseClasses.CLoadCase[1];
            m_arrLoadCombs = new BaseClasses.CLoadCombination[1];

            // Auxiliary
            // Load
            float fF1 = 45000f;   // Unit [N]
            float fF2 = 55000f;   // Unit [N]
            float fM = 60000000f;   // Unit [Nm]
            float fq = 22f;   // Unit [N/m]

            // Geometry
            float fa = 2.8f,
                  fb = 5.6f,
                  fc = 4.2f;     // Unit [m]

            // Materials
            // Materials List - Materials Array - Fill Data of Materials Array
            m_arrMat[0] = new CMat_00();

            m_arrMat[0].m_fE = 10000000f;          // Unit [Pa]
            m_arrMat[0].m_fNu = 0.3f;              // Unit [-]
            m_arrMat[0].m_fG = 4000000;            // Unit [Pa]

            // Cross-sections
            // CrSc List - CrSc Array - Fill Data of Cross-sections Array
            m_arrCrSc[0] = new CRSC.CCrSc_0_00();

            m_arrCrSc[0].FA_g = 0.12f;   // Unit [m^2]
            m_arrCrSc[0].FI_y = 0.0016f; // Unit [m^4]
            m_arrCrSc[0].FI_z = 0.0016f; // Unit [m^4]
            m_arrCrSc[0].m_Mat = m_arrMat[0]; // Set CrSc Material

            // Nodes
            // Nodes List - Nodes Array

            // Nodes
            // Node 1
            m_arrNodes[0] = new CNode();
            m_arrNodes[0].ID = 1;
            m_arrNodes[0].X = fa + fb;
            m_arrNodes[0].Y = fc;
            m_arrNodes[0].Z = 0f;

            // Node 2
            m_arrNodes[1] = new CNode();
            m_arrNodes[1].ID = 2;
            m_arrNodes[1].X = fb;
            m_arrNodes[1].Y = 0f;
            m_arrNodes[1].Z = 0f;

            // Node 3
            m_arrNodes[2] = new CNode();
            m_arrNodes[2].ID = 3;
            m_arrNodes[2].X = 0f;
            m_arrNodes[2].Y = 0f;
            m_arrNodes[2].Z = 0f;

            // Node 4
            m_arrNodes[3] = new CNode();
            m_arrNodes[3].ID = 4;
            m_arrNodes[3].X = 0f;
            m_arrNodes[3].Y = -fa;
            m_arrNodes[3].Z = 0f;

            // Node 5
            m_arrNodes[4] = new CNode();
            m_arrNodes[4].ID = 5;
            m_arrNodes[4].X = 0f;
            m_arrNodes[4].Y = fc;
            m_arrNodes[4].Z = 0f;

            // Sort by ID
            //Array.Sort(m_arrNodes, new BaseClasses.CCompare_NodeID());

            // Members
            // Members List - Members Array

            // Member 1 - 1-2
            m_arrMembers[0] = new CMember();
            m_arrMembers[0].ID = 1;
            m_arrMembers[0].NodeStart = m_arrNodes[0];
            m_arrMembers[0].NodeEnd = m_arrNodes[1];
            m_arrMembers[0].CrScStart = m_arrCrSc[0];

            // Member 2 - 2-3
            m_arrMembers[1] = new CMember();
            m_arrMembers[1].ID = 2;
            m_arrMembers[1].NodeStart = m_arrNodes[1];
            m_arrMembers[1].NodeEnd = m_arrNodes[2];
            m_arrMembers[1].CrScStart = m_arrCrSc[0];

            // Member 3 - 3-4
            m_arrMembers[2] = new CMember();
            m_arrMembers[2].ID = 3;
            m_arrMembers[2].NodeStart = m_arrNodes[2];
            m_arrMembers[2].NodeEnd = m_arrNodes[3];
            m_arrMembers[2].CrScStart = m_arrCrSc[0];

            // Member 4 - 3-5
            m_arrMembers[3] = new CMember();
            m_arrMembers[3].ID = 4;
            m_arrMembers[3].NodeStart = m_arrNodes[2];
            m_arrMembers[3].NodeEnd = m_arrNodes[4];
            m_arrMembers[3].CrScStart = m_arrCrSc[0];

            //Sort by ID
            //Array.Sort(m_arrMembers, new BaseClasses.CCompare_MemberID());

            // Nodal Supports - fill values
            // Support 1 - NodeIDs: 1,4
            m_arrNSupports[0] = new CNSupport(m_eNDOF);
            m_arrNSupports[0].ID = 1;
            m_arrNSupports[0].m_bRestrain[0] = true; // true - 1 restraint (infinity) / false - 0 - free (zero rigidity)
            m_arrNSupports[0].m_bRestrain[1] = true;
            m_arrNSupports[0].m_bRestrain[2] = true;
            m_arrNSupports[0].m_iNodeCollection = new int[2];
            m_arrNSupports[0].m_iNodeCollection[0] = 1;
            m_arrNSupports[0].m_iNodeCollection[1] = 4;

            // Support 2 - NodeIDs: 3
            m_arrNSupports[1] = new CNSupport(m_eNDOF);
            m_arrNSupports[1].ID = 2;
            m_arrNSupports[1].m_bRestrain[0] = true; // true - 1 restraint (infinity) / false - 0 - free (zero rigidity) - support in GCS X-axis
            m_arrNSupports[1].m_bRestrain[1] = false;
            m_arrNSupports[1].m_bRestrain[2] = false;
            m_arrNSupports[1].m_iNodeCollection = new int[1];
            m_arrNSupports[1].m_iNodeCollection[0] = 3;

            // Support 3 - NodeIDs: 5
            m_arrNSupports[2] = new CNSupport(m_eNDOF);
            m_arrNSupports[2].ID = 3;
            m_arrNSupports[2].m_bRestrain[0] = true; // true - 1 restraint (infinity) / false - 0 - free (zero rigidity) - support in GCS X and Y-axis
            m_arrNSupports[2].m_bRestrain[1] = true;
            m_arrNSupports[2].m_bRestrain[2] = false;
            m_arrNSupports[2].m_iNodeCollection = new int[1];
            m_arrNSupports[2].m_iNodeCollection[0] = 5;

            // Sort by ID
            Array.Sort(m_arrNSupports, new BaseClasses.CCompare_NSupportID());

            // Member releases
            bool?[] bRelTemp = new bool?[m_eNDOF];
            bRelTemp[0] = true; // true - 1 restraint (infinity rigidity) / false - 0 - free (zero rigidity) - support in LCS X and Y-axis
            bRelTemp[1] = true;
            bRelTemp[2] = false;

            CNRelease NRelease1 = new CNRelease(m_eNDOF, m_arrNodes[1], m_arrMembers[0], bRelTemp, 0);
            NRelease1.m_iNodeCollection = new int[1];
            NRelease1.m_iNodeCollection[0] = 2;
            NRelease1.m_iMembCollection = new int[2];
            NRelease1.m_iMembCollection[0] = 1;
            NRelease1.m_iMembCollection[1] = 2;
            m_arrNReleases[0] = NRelease1;
            m_arrMembers[0].CnRelease2 = m_arrNReleases[0]; // Release at end node
            m_arrMembers[1].CnRelease1 = m_arrNReleases[0]; // Release at start node

            // Nodal loads
            // Load 1 - NodeIDs: 2
            CNLoadSingle NLoad0 = new CNLoadSingle();
            NLoad0.INLoad_ID = 1;
            NLoad0.NLoadType = ENLoadType.eNLT_Fy;
            NLoad0.INodeCollection = new int[1];
            NLoad0.INodeCollection[0] = 2;
            NLoad0.Value = fF2; // Positive

            m_arrNLoads[0] = NLoad0;

            // Member loads
            // Load 1 and 2 - MemberIDs: 1

            float fAlpha_1 = (236.3099f / 360f) * 2 * MATH.MathF.fPI;  // Radians
            float fF1x = Math.Abs(fF1 * (float)Math.Cos(fAlpha_1));    // Force in local coordinate system of member + possitive orientation  in x-axis
            float fF1y = fF1 * (float)Math.Sin(fAlpha_1);              // Force in local coordinate system of member + negative orientation in y-axis

            CMLoad_11 MLoad_F1x = new CMLoad_11(fF1x, 0.5f * m_arrMembers[0].FLength);
            MLoad_F1x.ID = 1;
            MLoad_F1x.MLoadTypeDistr = EMLoadTypeDistr.eMLT_FS_H_12;
            MLoad_F1x.MLoadType = EMLoadType.eMLT_F;
            MLoad_F1x.EDirPPC = EMLoadDirPCC1.eMLD_PCC_FXX_MXX;
            MLoad_F1x.IMemberCollection = new int[1];
            MLoad_F1x.IMemberCollection[0] = 1;

            m_arrMLoads[0] = MLoad_F1x;

            CMLoad_11 MLoad_F1y = new CMLoad_11(fF1y, 0.5f * m_arrMembers[0].FLength);
            MLoad_F1y.ID = 2;
            MLoad_F1y.MLoadTypeDistr = EMLoadTypeDistr.eMLT_FS_H_12;
            MLoad_F1y.MLoadType = EMLoadType.eMLT_F;
            MLoad_F1y.EDirPPC = EMLoadDirPCC1.eMLD_PCC_FYU_MZV;
            MLoad_F1y.IMemberCollection = new int[1];
            MLoad_F1y.IMemberCollection[0] = 1;

            m_arrMLoads[1] = MLoad_F1y;

            // Load 3 - MemberIDs: 3
            CMLoad_21 MLoad_q = new CMLoad_21(fq);
            MLoad_q.ID = 3;
            MLoad_q.MLoadTypeDistr = EMLoadTypeDistr.eMLT_QUF_W_21;
            MLoad_q.MLoadType = EMLoadType.eMLT_F;
            MLoad_q.EDirPPC = EMLoadDirPCC1.eMLD_PCC_FYU_MZV;
            MLoad_q.IMemberCollection = new int[1];
            MLoad_q.IMemberCollection[0] = 2;

            m_arrMLoads[2] = MLoad_q;

            // Load 4 - MemberIDs: 4
            CMLoad_11 MLoad_M = new CMLoad_11(-fM, 0.5f * m_arrMembers[3].FLength);
            MLoad_M.ID = 4;
            MLoad_M.MLoadTypeDistr = EMLoadTypeDistr.eMLT_FS_H_12;
            MLoad_M.MLoadType = EMLoadType.eMLT_M;
            MLoad_M.EDirPPC = EMLoadDirPCC1.eMLD_PCC_FYU_MZV;
            MLoad_M.IMemberCollection = new int[1];
            MLoad_M.IMemberCollection[0] = 4;

            m_arrMLoads[3] = MLoad_M;

            // Load Cases
            // Load Case 1
            m_arrLoadCases[0] = new CLoadCase();
            m_arrLoadCases[0].ID = 1;

            // Load Combinations
            // Load Combination 1
            m_arrLoadCombs[0] = new CLoadCombination();
            m_arrLoadCombs[0].ID = 1;
        }