예제 #1
0
        private void button1_Click(object sender, EventArgs e)
        {
            bool[] BC_CONVECTION = new bool[4];
            bool[] BC_CONST_T = new bool[4];
            bool[] BC_ADIABATIC = new bool[4];

            // 0 - TOP
            // 1 - LEFT
            // 2 - SOUTH
            // 3 - RIGHT
            BC_CONST_T[0] = false;
            BC_CONST_T[1] = false;
            BC_CONST_T[2] = true;
            BC_CONST_T[3] = false;

            BC_CONVECTION[0] = true;
            BC_CONVECTION[1] = false;
            BC_CONVECTION[2] = false;
            BC_CONVECTION[3] = false;

            BC_ADIABATIC[0] = false;
            BC_ADIABATIC[1] = true;
            BC_ADIABATIC[2] = false;
            BC_ADIABATIC[3] = true;

            float[] h_Coefficient = new float[4];
            float[] T_Constant = new float[4];
            float[] T_infinity = new float[4];

            h_Coefficient[0] = 15.0f;
            h_Coefficient[1] = 0.0f;
            h_Coefficient[2] = 0.0f;
            h_Coefficient[3] = 0.0f;

            T_Constant[0] = 0.0f;
            T_Constant[1] = 0.0f;
            T_Constant[2] = 275.0f;
            T_Constant[3] = 0.0f;

            T_infinity[0] = 288.0f;
            T_infinity[1] = 0.0f;
            T_infinity[2] = 0.0f;
            T_infinity[3] = 0.0f;

            MaterialManager myManager = new MaterialManager(myError);

            TEMGeometry myGeometry = new TEMGeometry(myError);

            Mesh myMesh = new Mesh(myError, myGeometry.Layer_List);

            NodeInitializer myInitializer = new NodeInitializer(myMesh.NodeArray, myError, myManager, myGeometry.Layer_List, 0.5f, 5.0f, false);

            BoundaryConditions myBC = new BoundaryConditions(myMesh.NodeArray, myError, BC_CONVECTION, BC_CONST_T, BC_ADIABATIC, h_Coefficient, T_infinity, T_Constant);

            CSVWriter myCSV = new CSVWriter(myMesh.NodeArray);

            //Solver mySolver = new Solver(myError, myMesh.NodeArray);

            //mySolver.Solve_2D(0.005f);
        }
예제 #2
0
        /// <summary>
        /// Constructor of the NodeInitializer Class.
        /// </summary>
        /// <param name="Nodes">Node Array of Numeric Model</param>
        /// <param name="local_ErrorHandler">Error Handler for Message Passing</param>
        /// <param name="Materials">Material Manager which holds all the material properties</param>
        /// <param name="Layers">List of Layers holding material information for each node inside of it</param>
        public NodeInitializer(Node[][] Nodes, ErrorHandler local_ErrorHandler, MaterialManager Materials, List<Layer> Layers, float dt, float Amps, bool is_Warming_Top)
        {
            this.dt = dt;

            this.Amps = Amps;

            this.is_Warming_Top = is_Warming_Top;

            x_Max_DX = 0.0f;
            y_Max_DY = 0.0f;

            max_X = 0.0f;
            max_Y = 0.0f;

            foreach (Node[] node_array in Nodes)
            {
                foreach (Node node in node_array)
                {
                    if (node.x_pos > x_Max_DX)
                        x_Max_DX = node.x_pos;

                    if (node.y_pos > y_Max_DY)
                        y_Max_DY = node.y_pos;

                }
            }

            foreach (Layer layer in Layers)
            {
                if (layer.Layer_xf > max_X)
                    max_X = layer.Layer_xf;
                if (layer.Layer_y0 > max_Y)
                    max_Y = layer.Layer_y0;
            }

            LayerList = Layers;

            NodeArray = Nodes;

            Node_I_ErrorHandler = local_ErrorHandler;

            Mat_Manager = Materials;

            x_MinpDX = Nodes[0][0].x_pos;
            y_MinpDY = Nodes[0][0].y_pos;

            Assign_Materials();

            Calculate_DxDy();

            Initialize_Heat_Generation(Amps, is_Warming_Top); // Passed in 5.0f value represents an initialization current... this needs to be fed in

            Initialize_Influence_Coefficients(Nodes); // Must come after heat generation initialization
        }