<O N="FiniteElement" T="Project">
<P N="Guard" V="runMesh.EQ.1" />
<!-- BeamConsole parametreleri kirişte konsol olması durumunda finite element nodelarının doğru yerde oluşması için hesaplanmıştır.-->
<P N="BeamConsole1" V="filter(SortedBeamPTs,x.console_1 .NE. 0 )" />
<P N="BeamConsole2" V="filter(SortedBeamPTs,x.console_1 .NE. 0 )" />
<O N="Midpoints" T="Repeat" S="0" E="length(SortedBeamPTs)-2" I="1" CTRL="i" i="0">
<!-- Kirislerin ve Kirislerin orta noktalarının meshlenmesi -->
<!-- Transverse yönüne göre Y koordinatları küçükten büyüğe sıralanan kirislerin küçük olanının başlangıç noktası -->
<P N="LeftBeamSt" V="online(SortedBeamPTs[i].MidRef,SortedBeamPTs[i].console_1)" />
<P N="DistanceL" V="linel(SortedBeamPTs[i].MidRef)-SortedBeamPTs[i].console_2" />
<!-- Transverse yönüne göre Y koordinatları küçükten büyüğe sıralanan kirislerin küçük olanının bitiş noktası -->
<P N="LeftBeamFnsh" V="online(SortedBeamPTs[i].MidRef,DistanceL)" />
<!-- Transverse yönüne göre Y koordinatları küçükten büyüğe sıralanan kirislerin büyük olanının başlangıç noktası -->
<P N="RightBeamSt" V="online(SortedBeamPTs[i+1].MidRef,SortedBeamPTs[i+1].console_1)" />
<P N="DistanceR" V="linel(SortedBeamPTs[i+1].MidRef)-SortedBeamPTs[i+1].console_2" />
<!-- Transverse yönüne Y koordinatları göre küçükten büyüğe sıralanan kirislerin büyük olanının bitiş noktası -->
<P N="RightBeamFnsh" V="online(SortedBeamPTs[i+1].MidRef,DistanceR)" />
<!-- İki kirişin başlangıç noktalarının orta noktası -->
<P N="MidSt" V="onliner([LeftBeamSt,RightBeamSt],0.5)" />
<!-- İki kirişin bitiş noktalarının orta noktası -->
<P N="MidFnsh" V="onliner([LeftBeamFnsh,RightBeamFnsh],0.5)" />
<P N="MidpointSt" V="onliner([SortedBeamPTs[i].MidRef[0],SortedBeamPTs[i+1].MidRef[0]],0.5)" />
<P N="MidpointFnsh" V="onliner([SortedBeamPTs[i].MidRef[1],SortedBeamPTs[i+1].MidRef[1]],0.5)" />
<!-- Kirislerin orta noktalarından olusan Line -->
<P N="MidLine" V="[MidpointSt,MidpointFnsh]" />
<!-- Konsol bırakılan kirislerin mesnetlerle baglantısını saglayacak olan liste -->
<P N="Beam_L" V="[LeftBeamSt,LeftBeamFnsh]" />
<P N="Beam_R" V="[RightBeamSt,RightBeamFnsh]" />
<P N="Mid_Coordinate" V="[MidSt,MidFnsh]" />
</O>
<O N="InputsforRepeats" T="Group">
<!-- External ve Internal Repeatlerine girecek olan listeler bu grup altında toplanmıstır. -->
<!-- Dosemelerin reflinelarının birlestigi liste -->
<P N="References_Line" V="sort(concat([SlabRef_L],[SlabRef_R]),x[1])" />
<P N="M_Coordinates" V="map(Midpoints , x.Mid_Coordinate)" />
<P N="Beam_CoorL" V="map(Midpoints , x.Beam_L)" />
<P N="Beam_CoorR" V="map(Midpoints , x.Beam_R)" />
<!-- Internal Repeatine girecek olan tum koordinatların listesi -->
<P N="Beam_Mid" V="removedup(sort(concat(M_Coordinates,Beam_CoorL,Beam_CoorR),x[0][1]),x[0][1])" />
<!-- Internal Repeatinin kac kere doneceginin hesaplanması -->
<P N="number" V="2*length(SortedBeamPTs)-1" />
<O N="Bearing_Distance" T="Group">
<!-- Kirislerin doseme ile baglantısını saglayacak liste -->
<P N="GirderPoints" V="map(SortedBeamPTs,x.MidRef ) " />
<!-- Kirislerin ortalarındaki mesheleme -->
<P N="Midpoint_Coordinate1" V="map(Midpoints, x.MidLine)" />
<!-- Dosemede bulunan butun nodeların koordinat listesi -->
<P N="GeneralCoordinates" V="sort(concat(GirderPoints,Midpoint_Coordinate1,[SlabRefline_L],[SlabRefline_R]),x[0][1])" />
<O N="Split1" T="Repeat" S="0" E="number+1" I="1" CTRL="k" k="0">
<!-- Surfacelar olusurken mesnetlenme bolgesindeki surfaceların koordinatları -->
<P N="Start_Point1" V="GeneralCoordinates[k][0]" />
<P N="S_PointX1" V="alignHX(SlabRoute,Start_Point1[0],Start_Point1[1])" />
<P N="S_PointY1" V="alignHY(SlabRoute,Start_Point1[0],Start_Point1[1])" />
<P N="S_PointZ1" V="Start_Point1[2]+alignV(SlabRoute,Start_Point1[0],Start_Point1[1])+alignT(SlabRoute,Start_Point1[0],Start_Point1[1])" />
<P N="S1_PointAligned" V="[S_PointX1,S_PointY1,S_PointZ1]" />
<P N="Final_Point1" V="GeneralCoordinates[k][1]" />
<P N="F_PointX1" V="alignHX(SlabRoute,Final_Point1[0],Final_Point1[1])" />
<P N="F_PointY1" V="alignHY(SlabRoute,Final_Point1[0],Final_Point1[1])" />
<P N="F_PointZ1" V="Final_Point1[2]+alignV(SlabRoute,Final_Point1[0],Final_Point1[1])+alignT(SlabRoute,Final_Point1[0],Final_Point1[1])" />
<P N="F1_PointAligned" V="[F_PointX1,F_PointY1,F_PointZ1]" />
</O>
<P N="Start_A_Points" V="map(Split1 ,x.S1_PointAligned)" />
<P N="Final_A_Points" V="map(Split1 ,x.F1_PointAligned)" />
</O>
</O>
<O N="External" T="Repeat" S="0" E="1" I="1" CTRL="j" j="0">
<!-- Alignment'taki curvature'ı yakalaması icin dosemenin dıs kenarlarındaki reflineların alignment'a manuel bir sekilde yerlestirilmesi
Line uzerindeki her bir node'un alignment'a girmesi icin uygulanan islem ( dıs kenarlar warp olması gerekiyor. ) -->
<P N="integer" V="iif(j .EQ. 0 , 0 , length(SortedBeamPTs)-1)" />
<P N="Offset_Point_S" V="online(References_Line[j],SortedBeamPTs[integer].console_1)" />
<P N="Offset_distance" V="linel(References_Line[j])-SortedBeamPTs[integer].console_2" />
<P N="Offset_Point_E" V="online(References_Line[j],Offset_distance)" />
<P N="S_Line" V="[Offset_Point_S,Offset_Point_E]" />
<P N="Splited_Line" V="linesplit(S_Line,Beam_Mesh)" />
<P N="Splitted_All_Point" V="removedup(sort(concat([Offset_Point_S],Splited_Line,[Offset_Point_E]),x[0]),x[0])" />
<O N="Split" T="Repeat" S="0" E="length(Splitted_All_Point)" I="1" CTRL="k" k="0">
<!-- Doseme uzerindeki noktaların Station-Transverse-Elevation Koordinatları -->
<P N="Start_Point" V="Splitted_All_Point[k]" />
<!-- Dosemenin noktalarının Global X koordinatı -->
<P N="S_PointX" V="alignHX(SlabRoute,Start_Point[0],Start_Point[1])" />
<!-- Dosemenin noktalarının Global Y koordinatı -->
<P N="S_PointY" V="alignHY(SlabRoute,Start_Point[0],Start_Point[1])" />
<!-- Dosemenin noktalarının Global Z koordinatı -->
<P N="S_PointZ" V="Start_Point[2]+alignV(SlabRoute,Start_Point[0],Start_Point[1])+alignT(SlabRoute,Start_Point[0],Start_Point[1])" />
<!-- Dosemenin noktalarının Global XYZ Koordinat Listesi -->
<P N="S_PointAligned" V="[S_PointX,S_PointY,S_PointZ]" />
</O>
<!-- Cift repeat dondugunden dolayı repeatten okunacak degerlerin adım adım listelenmesi -->
<P N="Pre_External_Lines" V="map(Split , x.S_PointAligned )" />
</O>
<O N="Internal" T="Repeat" S="0" E="number-1" I="1" CTRL="t" t="0">
<!-- Dosemenin ic yuzeyindeki nodeların olusturulması -->
<!-- İc taraftaki lineların sadece baslangıc ve bitis noktası alignment'a girmesi gerektigi icin boyle bir islem uygulandı. -->
<!-- Kirisin baslangıc noktasının Station-Transverse-Elevation Koordinatları -->
<P N="First_Point" V="Beam_Mid[t][0]" />
<!-- Kirisin Baslangıc Noktasının Global X Degeri -->
<P N="First_PointX" V="alignHX(SlabRoute,First_Point[0],First_Point[1])" />
<!-- Kirisin Baslangıc Noktasının Global Y Degeri -->
<P N="First_PointY" V="alignHY(SlabRoute,First_Point[0],First_Point[1])" />
<!-- Kirisin Baslangıc Noktasının Global Z Degeri -->
<P N="First_PointZ" V="First_Point[2]+alignV(SlabRoute,First_Point[0],First_Point[1])+alignT(SlabRoute,First_Point[0],First_Point[1])" />
<P N="FirstPoint_Aligned" V="[First_PointX,First_PointY,First_PointZ]" />
<!-- Kirisin bitis noktasının Station-Transverse-Elevation Koordinatları -->
<P N="Second_Point" V="Beam_Mid[t][1]" />
<!-- Kirisin Bitis Noktasının Global X Degeri -->
<P N="Second_PointX" V="alignHX(SlabRoute,Second_Point[0],Second_Point[1])" />
<!-- Kirisin Bitis Noktasının Global Y Degeri -->
<P N="Second_PointY" V="alignHY(SlabRoute,Second_Point[0],Second_Point[1])" />
<!-- Kirisin Bitis Noktasının Global Z Degeri -->
<P N="Second_PointZ" V="Second_Point[2]+alignV(SlabRoute,Second_Point[0],Second_Point[1])+alignT(SlabRoute,Second_Point[0],Second_Point[1])" />
<P N="SecondPoint_Aligned" V="[Second_PointX,Second_PointY,Second_PointZ]" />
<!-- İki noktası alignment'a girmis olan kirisin refline koordinatları -->
<P N="AlignedLine" V="[FirstPoint_Aligned,SecondPoint_Aligned]" />
<!-- Kirisin meshlenmesi -->
<P N="Aligned_Splited_Line" V="linesplit(AlignedLine,Beam_Mesh)" />
</O>
<O N="List" T="Group">
<!-- Dosemenin sonlu elemanlar modelini olusturacak butun nodeların listelenmesi -->
<P N="external_lines" V="map(External , x.Pre_External_Lines)" />
<P N="internal_lines" V="map(Internal, x.Aligned_Splited_Line)" />
<P N="ALigned_All_List" V="concat([external_lines[0]],internal_lines,[external_lines[1]])" />
</O>
<O N="Longitudinal_Loop" T="Repeat" S="0" E="Beam_Mesh-1" I="1" CTRL="n" n="0">
<O N="Transverse_Loop" T="Repeat" S="0" E="number" I="1" CTRL="m" m="0">
<O N="Node_1" T="Node" X="ALigned_All_List[m][n][0]" Y="ALigned_All_List[m][n][1]" Z="ALigned_All_List[m][n][2]" />
<O N="Node_2" T="Node" X="ALigned_All_List[m+1][n][0]" Y="ALigned_All_List[m+1][n][1]" Z="ALigned_All_List[m+1][n][2]" />
<O N="Node_3" T="Node" X="ALigned_All_List[m][n+1][0]" Y="ALigned_All_List[m][n+1][1]" Z="ALigned_All_List[m][n+1][2]" />
<O N="Node_4" T="Node" X="ALigned_All_List[m+1][n+1][0]" Y="ALigned_All_List[m+1][n+1][1]" Z="ALigned_All_List[m+1][n+1][2]" />
<O N="S1" T="FESurface" Node1LocalOffZ="-SlabThickness/2" Node2LocalOffZ="-SlabThickness/2" Node3LocalOffZ="-SlabThickness/2" Node4LocalOffZ="-SlabThickness/2">
<P N="Material" V="SlabMat" T="Material" />
<P N="Node1" V="Node_1" T="Node" />
<P N="Node2" V="Node_2" T="Node" />
<P N="Node3" V="Node_4" T="Node" />
<P N="Node4" V="Node_3" T="Node" />
<P N="Thickness" V="SlabThickness" />
</O>
<O N="Boundary_Surface_1" T="Group">
<!-- Kirisin baslangıcında bulunan mesnetlenme bolgesinin olması durumu -->
<P N="Guard" V="n .EQ. 0 .AND. length(BeamConsole1) .NE. 0" />
<O N="Node_S1" T="Node" X="Start_A_Points[m][0]" Y="Start_A_Points[m][1]" Z="Start_A_Points[m][2]-iif( m .EQ. 0 , +SlabThickness , 0 )" />
<O N="Node_S2" T="Node" X="Start_A_Points[m+1][0]" Y="Start_A_Points[m+1][1]" Z="Start_A_Points[m+1][2]-iif( m .EQ. number , SlabThickness , 0 ) " />
<O N="S2" T="FESurface" Node1LocalOffZ="-SlabThickness/2" Node2LocalOffZ="-SlabThickness/2" Node3LocalOffZ="-SlabThickness/2" Node4LocalOffZ="-SlabThickness/2">
<P N="Material" V="SlabMat" T="Material" />
<P N="Node1" V="Node_S1" T="Node" />
<P N="Node2" V="Node_S2" T="Node" />
<P N="Node3" V="Node_2" T="Node" />
<P N="Node4" V="Node_1" T="Node" />
<P N="Thickness" V="SlabThickness" />
</O>
</O>
<O N="Boundary_Surface_2" T="Group">
<!-- Kirisin sonunda bulunan mesnetlenme bolgesinin olması durumu -->
<P N="Guard" V="n .EQ. Beam_Mesh-1 .AND. length(BeamConsole2) .NE. 0" />
<O N="Node_F1" T="Node" X="Final_A_Points[m][0]" Y="Final_A_Points[m][1]" Z="Final_A_Points[m][2]-iif( m .EQ. 0 , SlabThickness , 0 )" />
<O N="Node_F2" T="Node" X="Final_A_Points[m+1][0]" Y="Final_A_Points[m+1][1]" Z="Final_A_Points[m+1][2]-iif( m .EQ. number , SlabThickness , 0 )" />
<O N="S3" T="FESurface" Node1LocalOffZ="-SlabThickness/2" Node2LocalOffZ="-SlabThickness/2" Node3LocalOffZ="-SlabThickness/2" Node4LocalOffZ="-SlabThickness/2">
<P N="Material" V="SlabMat" T="Material" />
<P N="Node1" V="Node_3" T="Node" />
<P N="Node2" V="Node_4" T="Node" />
<P N="Node3" V="Node_F2" T="Node" />
<P N="Node4" V="Node_F1" T="Node" />
<P N="Thickness" V="SlabThickness" />
</O>
</O>
</O>
</O>
</O>