@@ -2702,6 +2702,7 @@ I$FORTRAN$ELEMENT[ (* -- FORTRAN CODE FOR ELEMENT *)
2702
2702
LOCAL ,
2703
2703
"\n " ,
2704
2704
StringTemplate [" DO I=1,NUMBER_OF_STEPS(`1`),1\n " ][INDEX ],
2705
+ Part [LPROLOG , LCOUNT ],
2705
2706
" " ,
2706
2707
FACTOR ,
2707
2708
"\n " ,
@@ -2737,6 +2738,7 @@ I$FORTRAN$ELEMENT[ (* -- FORTRAN CODE FOR ELEMENT *)
2737
2738
" THIS=NEXT\n " ,
2738
2739
" END IF\n " ,
2739
2740
" END DO\n " ,
2741
+ Part [LEPILOG , LCOUNT ],
2740
2742
" END DO\n "
2741
2743
]
2742
2744
]
@@ -4671,6 +4673,7 @@ I$TRACK[ (* -- TRACKING (INTERNAL & EXTERNAL APERTURE)
4671
4673
ClearAll [I$LINE ] ;
4672
4674
I$LINE ::usage = "
4673
4675
I$LINE[LENGTH,RADIUS,DISTANCE] -- generate <LENGTH> (integer) lines with maximal radius <RADIUS> (real) with distance between points <DISTANCE> (real)
4676
+ I$LINE[LENGTH,RX,RY,LIMIT] -- generate <LENGTH> (integer) lines with <LIMIT> (integer) points on each line and maximal horizontal radius <RX> (real) and verticle radius <RY> (real)
4674
4677
" ;
4675
4678
I$LINE [ (* -- INITIAL LINES GENERATION *)
4676
4679
LENGTH_ , (* -- NUMBER OF LINES (INTEGER) *)
@@ -4685,6 +4688,25 @@ I$LINE[ (* -- INITIAL LINES GENERATION *)
4685
4688
First [Transpose [SortBy [Transpose [List [POINT ,ANGLE ]],Last ]]]
4686
4689
]
4687
4690
] ;
4691
+ I$LINE [ (* -- INITIAL LINES GENERATION *)
4692
+ LENGTH_ , (* -- NUMBER OF LINES (INTEGER) *)
4693
+ RX_ , (* -- H-RADIUS (REAL) *)
4694
+ RY_ , (* -- V-RADIUS (REAL) *)
4695
+ LIMIT_ (* -- DISTANCE BETWEEN POINTS ON A LINE (REAL) *)
4696
+ ] := Block [
4697
+ {CUT },
4698
+ CUT [{X_ ,Y_ }] := Block [
4699
+ {ANGLE , LIST , INDEX },
4700
+ ANGLE = Subdivide [0 , Pi , LENGTH - 1 ] ;
4701
+ LIST = ParametricPlot [{X * Cos [S ], Y * Sin [S ]}, {S , 0 , Pi }, Mesh -> {ANGLE }, MeshStyle -> Red , PlotStyle -> Black ] ;
4702
+ LIST = Cases [LIST ,GraphicsComplex [DATA__ ] :> DATA , Infinity ] ;
4703
+ INDEX = LIST [[- 1 , - 1 , 1 , - 1 , 1 ]] ;
4704
+ LIST = LIST [[1 , INDEX ]] ;
4705
+ LIST = Join [LIST , {{X , 0.0 }}] // Chop // N ;
4706
+ Reverse [SortBy [LIST , First ]]
4707
+ ] ;
4708
+ Table [CUT [{RATIO * RX ,RATIO * RY }],{RATIO ,N [Subdivide [0 ,1 ,LIMIT - 1 ]]}] // Transpose
4709
+ ] ;
4688
4710
(* ################################################################################################################################################################ *)
4689
4711
(* GENERATE FULL INITIAL CONDITION *)
4690
4712
(* ################################################################################################################################################################ *)
0 commit comments