예제 #1
0
        private List<Layer> GenerateGeometry()
        {
            List<Layer> Geometry_Layer_List = new List<Layer>();

            // Need to eliminate Nodes numbering requirement from Layer Class
            double x0 = 0.0f;
            double y0 = 0.00132080f;

            double xf = 0.001397f;
            double yf = 0.0f;

            string TE_Mat = "BiTe";

            // Node numbering requirement not needed for uniform mesh generation
            Layer Element = new Layer(x0, y0, xf, yf, TE_Mat);

            Geometry_Layer_List.Add(Element);

            return Geometry_Layer_List;
        }
예제 #2
0
        // GenerateGeometry
        //
        // Main function which generates the geometry of the TEM, and organizes it into a list of layers
        /// <summary>
        /// Generates geometry of the TEM, which is essentially a list of rectangular coordinates
        /// </summary>
        /// <returns>List (array) of Layer objects</returns>
        public List<Layer> GenerateGeometry()
        {
            // Generates Layers for both top and bottom ceramic pieces of TEM geometry
            Layer TEM_Bottom = new Layer(Coord_Ceramic_Base_Bottom[0], Coord_Ceramic_Base_Bottom[1], Coord_Ceramic_Base_Bottom[2], Coord_Ceramic_Base_Bottom[3], "Ceramic");
            Layer TEM_Top = new Layer(Coord_Ceramic_Base_Top[0], Coord_Ceramic_Base_Top[1], Coord_Ceramic_Base_Top[2], Coord_Ceramic_Base_Top[3], "Ceramic");

            Layer_List.Add(TEM_Bottom);
            Layer_List.Add(TEM_Top);
            // End of ceramic geometry creation

            // Generates Layers for air gaps to the far left and far right of the computational domain
            Layer Left_Air_Gap = new Layer(Coord_Left_Air_Gap[0], Coord_Left_Air_Gap[1], Coord_Left_Air_Gap[2], Coord_Left_Air_Gap[3], "Air");
            Layer Right_Air_Gap = new Layer(Coord_Right_Air_Gap[0], Coord_Right_Air_Gap[1], Coord_Right_Air_Gap[2], Coord_Right_Air_Gap[3], "Air");

            Layer_List.Add(Left_Air_Gap);
            Layer_List.Add(Right_Air_Gap);
            // End creation of Air Gaps

            // Generates Layer for first and last Cu pieces on the bottom (stubbed off ones)
            Layer First_Bot_Cu = new Layer(Coord_First_Bot_CU[0], Coord_First_Bot_CU[1], Coord_First_Bot_CU[2], Coord_First_Bot_CU[3], "Copper");
            Layer Last_Bot_Cu = new Layer(Coord_Last_Bot_CU[0], Coord_Last_Bot_CU[1], Coord_Last_Bot_CU[2], Coord_Last_Bot_CU[3], "Copper");

            Layer_List.Add(First_Bot_Cu);
            Layer_List.Add(Last_Bot_Cu);
            // End creation of the first and last bottom Cu pieces

            // Generates Layers for each the rest of the bottom Cu pieces
            for (int i = 0; i < 7; i++)
            {
                double x0 = Coord_Cu_Bottom[0] + ((double)i * (BiTE_AirGap + CE_Width));
                double y0 = Coord_Cu_Bottom[1];
                double xf = x0 + CE_Width;
                double yf = Coord_Cu_Bottom[3];

                Layer_List.Add(new Layer(x0, y0, xf, yf, "Copper"));

            }
            // End creation of bottom Cu pieces

            // Generates Layers for each of the top of the Cu pieces
            for (int i = 0; i < 8; i++)
            {
                double x0 = Coord_Cu_Top[0] + ((double)i * (BiTE_AirGap + CE_Width));
                double y0 = Coord_Cu_Top[1];
                double xf = x0 + CE_Width;
                double yf = Coord_Cu_Top[3];

                Layer_List.Add(new Layer(x0, y0, xf, yf, "Copper"));
            }
            // End creation of the top Cu pieces

            // Generates layers for each of the Bismuth Telluride Pieces
            for (int i = 0; i < 16; i++)
            {
                double x0 = Coord_BiTE[0] + ((double)i * (BiTE_Thickness + BiTE_AirGap));
                double y0 = Coord_BiTE[1];
                double xf = x0 + BiTE_Thickness;
                double yf = Coord_BiTE[3];

                Layer_List.Add(new Layer(x0, y0, xf, yf, "BiTe"));

                Debug.WriteLine("BiTe Coordinates:  xf -> " + xf);
            }
            // End creation of the Bismuth Telluride Pieces

            // Generates layers for air gaps that 'double' near top
            for (int i = 0; i < 8; i++)
            {
                double x0 = Coord_Top_AirGaps[0] + ((double)i * (2.0f * (BiTE_Thickness + BiTE_AirGap)));
                double y0 = Coord_Top_AirGaps[1];
                double xf = x0 + BiTE_AirGap;
                double yf = Coord_Top_AirGaps[3];

                Layer_List.Add(new Layer(x0, y0, xf, yf, "Air"));
            }
            // End creation of layers for top air gaps

            // Generates layers for air gaps that 'double' near bottom
            for (int i = 0; i < 8; i++)
            {
                double x0 = Coord_Bottom_AirGaps[0] + ((double)i * (2.0f * (BiTE_Thickness + BiTE_AirGap)));
                double y0 = Coord_Bottom_AirGaps[1];
                double xf = x0 + BiTE_AirGap;
                double yf = Coord_Bottom_AirGaps[3];

                Layer_List.Add(new Layer(x0, y0, xf, yf, "Air"));
            }
            // End creation of layers for the bottom air gaps

            return Layer_List;
        }