zoukankan      html  css  js  c++  java
  • .Net ( c# ) 与 Fortran 混合编程实例(二):杆系结构有限元法——平面桁架解答(4):测试

    4.1  编写主程序

    新建控制台程序,命名为 Main,添加对 Business.dll 的引用,新建类,命名为 ClassPrint,贴入:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    using Business;
    
    namespace Main
    {
        class ClassPrint
        {
            string StrBarsPath;
            string StrNodesPath;
    
            //取得、构造初始文本路径
            public void GetInitPath()
            {
                Console.WriteLine("Please press down the path of Bars Information:");
                Console.Write(Environment.CurrentDirectory + "/");
                StrBarsPath = Environment.CurrentDirectory + "/" + Console.ReadLine();
    
                Console.WriteLine("Please press down the path of Nodes Information:");
                Console.Write(Environment.CurrentDirectory + "/");
                StrNodesPath = Environment.CurrentDirectory + "/" + Console.ReadLine();
            }
    
            public void PrintEquation()
            {
                //赋初值
                ClassGetBasicInfo c = new ClassGetBasicInfo();
                c.Initialize(StrBarsPath, StrNodesPath);
    
                //取得总刚度矩阵,总荷载列阵,总边界条件
                ClassCalculation cc = new ClassCalculation();
                cc.GetAll();
    
                //打印有限元法基本方程
                for (int i = 0; i < ClassBasicInfo.TatalRestraint.GetLength(0); i++)
                {
                    for (int j = 0; j < ClassBasicInfo.TatalRestraint.GetLength(0); j++)
                    {
                        Console.Write(ClassBasicInfo.TatalStiffnessMatrix[i, j].ToString() + "   ");
                    }
                    Console.Write(ClassBasicInfo.TatalRestraint[i].ToString() + "   ");
                    Console.Write(ClassBasicInfo.TatalLoads[i].ToString() + "\n");
                }
            }
    
            public void PrintSolution()
            {
                //引入边界条件,求得并整合总位移列阵
                ClassBoundaryIn ccc = new ClassBoundaryIn();
                ccc.GetAll();
    
                //打印总位移列阵
                for (int i = 0; i < ClassBasicInfo.TatalDisplacement.GetLength(0); i++)
                {
                    Console.WriteLine(ClassBasicInfo.TatalDisplacement[i].ToString() + "    " + ClassBasicInfo.TatalLoads[i].ToString());
                }
            }
        }
    }
    

    在 Program 入口中贴入:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    using Business;
    
    namespace Main
    {
        class Program
        {
            static void Main(string[] args)
            {
                ClassPrint c = new ClassPrint();
                Console.WriteLine();
                c.GetInitPath();
                c.PrintEquation();
                Console.WriteLine();
                c.PrintSolution();
                Console.WriteLine();
    
                Console.ReadLine();
            }
        }
    }
    

    4.2  测试

    运行程序,显示

    键入 bars.txt ,显示

    键入 nodes.txt,显示:


    下面一块左列为总位移列阵,右列为总荷载列阵,分别代表节点 x、y 两方向的位移、荷载。


    4.3  解决方案一览



  • 相关阅读:
    windows 修复MBR引导
    【转】用BibTeX 写 Reference
    【转】CVPR 2010 有趣的文章
    如何扩充C盘空间
    Web项目架构设计
    on条件与where条件的区别
    虚方法(virtual)和抽象方法(abstract)的区别
    SQL Server的备份还原通用解决方案
    为什么需要防火墙
    用Javascript写的抽奖的小游戏
  • 原文地址:https://www.cnblogs.com/silyvin/p/9106921.html
Copyright © 2011-2022 走看看