Beispiel #1
0
        public AbaqusProblemBuilder(double[][] shellVertices, int[][] shellFaces, IList <int> a1, IList <int> a2, IList <int> bc)
        {
            ShellVertices = shellVertices;
            ShellFaces    = shellFaces;

            ShellProperties = new AbaqusShellElementProperty[ShellFaces.Length];
            var shellProp = new AbaqusShellElementProperty(0.01, 5e9, 1, 0);

            for (int i = 0; i < ShellFaces.Length; i++)
            {
                ShellProperties[i] = shellProp;
            }

            int nodeNum = shellVertices.Length;


            // actuator length (in m)
            double[] pta_0, pta_1;
            double   sec, l, alpha, E, density;
            AbaqusTrussElementProperty trussProp;

            // A1
            pta_0 = shellVertices[a1[0]];
            pta_1 = shellVertices[a1[1]];
            l     = Math.Sqrt(
                (pta_1[0] - pta_0[0]) * (pta_1[0] - pta_0[0]) +
                (pta_1[1] - pta_0[1]) * (pta_1[1] - pta_0[1]) +
                (pta_1[2] - pta_0[2]) * (pta_1[2] - pta_0[2])
                );

            E       = 210e9;
            density = 8;
            sec     = Math.PI * Math.Pow(0.1, 2);

            alpha     = 1e-3 / l;
            trussProp = new AbaqusTrussElementProperty(sec, E, density, alpha);
            A1        = new Actuator(a1[0], a1[1], nodeNum, nodeNum + 1, trussProp);

            // A1
            pta_0 = shellVertices[a2[0]];
            pta_1 = shellVertices[a2[1]];
            l     = Math.Sqrt(
                (pta_1[0] - pta_0[0]) * (pta_1[0] - pta_0[0]) +
                (pta_1[1] - pta_0[1]) * (pta_1[1] - pta_0[1]) +
                (pta_1[2] - pta_0[2]) * (pta_1[2] - pta_0[2])
                );


            alpha     = 1e-3 / l;
            trussProp = new AbaqusTrussElementProperty(sec, E, density, alpha);
            A2        = new Actuator(a2[0], a2[1], nodeNum + 2, nodeNum + 3, trussProp);

            // BC
            BC = new BoundaryCondition[bc.Count];
            for (int i = 0; i < bc.Count; i++)
            {
                BC[i] = BoundaryCondition.CreateEncastreBC(bc[i]);
            }
        }
Beispiel #2
0
        public Actuator(int shellNodeNum_0, int shellNodeNum_1, int trussNodeNum_0, int trussNodeNum_1, AbaqusTrussElementProperty prop)
        {
            ShellNode_0 = shellNodeNum_0;
            ShellNode_1 = shellNodeNum_1;

            TrussNode_0 = trussNodeNum_0;
            TrussNode_1 = trussNodeNum_1;

            Property = prop;
        }