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; }
// 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; }