예제 #1
0
파일: Program.cs 프로젝트: vulf3d/BFE.Net
        private static void TestWithOpensees()
        {
            var model = StructureGenerator.Generate3DBarElementGrid(5, 5, 5);

            StructureGenerator.AddRandomiseLoading(model, true, false, LoadCase.DefaultLoadCase);
            StructureGenerator.AddRandomDisplacements(model, 0.3);


            model.Solve_MPC();

            OpenseesValidator.OpenseesValidate(model, LoadCase.DefaultLoadCase, false);
        }
예제 #2
0
        private static void Test_P_Delta_matrix()
        {
            var model = StructureGenerator.Generate3DFrameElementGrid(2, 2, 2);


            var zs = model.Nodes
                     .Where(i => i.Constraints != Constraints.Fixed)
                     .Select(i => i.Location.Z).Distinct().ToList();


            foreach (var z in zs)
            {
                var relm  = new RigidElement_MPC();
                var relm2 = new RigidElement();

                relm.Nodes.AddRange(model.Nodes.Where(i => i.Location.Z == z));
                relm2.Nodes.AddRange(model.Nodes.Where(i => i.Location.Z == z));

                model.MpcElements.Add(relm);
                model.RigidElements.Add(relm2);

                relm.UseForAllLoads  = true;
                relm2.UseForAllLoads = true;
            }

            //StructureGenerator.AddRandomDisplacements(model, 0.1);

            /**/
            foreach (var node in model.Nodes)
            {
                if (node.Constraints == Constraints.Fixed)
                {
                    node.Settlements.Add(new Settlement(new Displacement(1, 0, 0, 0, 0, 0)));
                    node.Loads.Clear();
                }
            }
            /**/


            StructureGenerator.AddRandomiseLoading(model, true, false, LoadCase.DefaultLoadCase);

            //model.Clone();

            #region

            #endregion

            model.Solve();
            //CalcUtil.GenerateP_Delta_Mpc(model, LoadCase.DefaultLoadCase,new GaussRrefFinder());
            model.LastResult.AddAnalysisResult(LoadCase.DefaultLoadCase);
            model.LastResult.AddAnalysisResult_MPC(LoadCase.DefaultLoadCase);
        }
예제 #3
0
        private void CreateGrid_Click(object sender, RoutedEventArgs e)
        {
            var wnd = new Window2();

            var res = wnd.ShowDialog();

            if (!res.HasValue || !res.Value)
            {
                return;
            }

            var grd = StructureGenerator.Generate3DFrameElementGrid(wnd.Context.XSpans + 1, wnd.Context.YSpans + 1,
                                                                    wnd.Context.ZSpans + 1);

            if (wnd.Context.RandomLoads)
            {
                StructureGenerator.AddRandomiseLoading(grd, true, false);
            }

            Context.Model = grd;
        }
예제 #4
0
        private static void TestIntelMkl()
        {
            var oldPath = Environment.GetEnvironmentVariable("PATH");

            var newPath = oldPath + @"C:\Program Files (x86)\IntelSWTools\compilers_and_libraries_2018.0.124\windows\redist\intel64_win\mkl;";

            Environment.SetEnvironmentVariable("PATH", newPath);

            //BriefFiniteElementNet.PardisoThing.test_pardiso.Main(null);

            return;

            var model = StructureGenerator.Generate3DBarElementGrid(1, 1, 2);


            //model.Nodes[4].Constraints = model.Nodes[5].Constraints = model.Nodes[6].Constraints = Constraints.Fixed;

            //model.Nodes[7].Constraints = Constraint.FromString("011101");

            var t = model.Nodes.Select(i => i.Constraints).ToArray();

            StructureGenerator.AddRandomiseLoading(model, true, false, LoadCase.DefaultLoadCase);

            var config = new SolverConfiguration();

            //config.SolverFactory = new IntelMklSolver.MklPardisoDirectSPDSolverFactory();
            config.LoadCases.AddRange(new List <LoadCase>()
            {
                LoadCase.DefaultLoadCase
            });

            model.Solve_MPC(config);
            //model.Solve(config);

            //model.Solve();

            var tmp = model.LastResult.Displacements.First().Value;
        }
예제 #5
0
        static void TestGrid()
        {
            var model = StructureGenerator.Generate3DBarElementGrid(15, 15, 15);

            //StructureGenerator.AddRandomiseNodalLoads(model, LoadCase.DefaultLoadCase);
            StructureGenerator.AddRandomiseLoading(model, true, true, LoadCase.DefaultLoadCase);

            model.Trace.Listeners.Add(new ConsoleTraceListener());

            model.Solve_MPC();

            Console.WriteLine("Total matrix rents: {0}", model.MatrixPool.TotalRents);
            Console.WriteLine("Total matrix creates: {0}", Matrix.CreateCount);
            Console.WriteLine("Total matrix destructs: {0}", Matrix.DistructCount);

            Console.WriteLine("hit: {0}", EulerBernoulliBeamHelper.hit);
            Console.WriteLine("miss: {0}", EulerBernoulliBeamHelper.miss);

            var totHit = model.Elements.Sum(i => i.CacheHit);
            var totMis = model.Elements.Sum(i => i.CacheMiss);

            Console.ReadKey();
        }