//Trans_State.java

import java.awt.Dimension;
import java.awt.Toolkit;
import java.util.*;

public class Trans_State{
    public double xpos, xpos_meters;
    //public double lineLength;
    public double lineLength, lineLength_meters, location1, location2, location3, lineLength_part1, lineLength_part2;
    public int linecounter1 = 1000, linecounter2 = 0;
    public int PlotTimeScale;
    public int plotFlag;
    public int ShuntPlace;
    
    public double frequency_ref, frequency, f_ratio;
    public double epsilon_r,mu_r;
    public double lineZ0;
    public double ZIMP[], eps_r[], lambda[], lambda_ref[];
    public double Section_length[], Section_length_ref[], Section_length_meters[];
    public double locations[], locations_ref[], locations_meters[];
    //Vin and Iin are voltage and current at the cursor
    public Complex Zin, Yin, Gammain, GammaL, Gammainput, Vin, Iin, VPlus, VPmax;
    public double VSWR, VSWRin, wavelength, wavelength_new, ZIMPmin, targetVSWR, targetGamma;
    public double Transformer_meters;
    public Complex ZL, ZL_ref, maximum1;
    public Complex ZS, ZS_ref, YS, YS_ref;
    public Complex YL, YL_ref, maximum2;
    public Complex ZGref, YGref;
    public Generator generator;
    public double Pw[], Ptest;
    public Stub stub[];
    public boolean is_Load_Ztype, is_Shunt_Ztype, zoom_f, LockCursor;
    
    //flags to remember which plot was on
    public boolean WasVoltage, WasCurrent, WasPower;
    public boolean WasSWP, WasVoltPhasor, WasCurPhasor, WasZ, WasY, WasGamma;
    //Plot Parameters
    Complex Voltage[], Current[], Impedance[], Admittance[];
    Complex RefCoef[], Power[];
    double x[];
    double y1[];
    double y2[];
    
    // Voltage envelope
    double yV1[], yV2[];
    
    public static final int NPoints=1000;
    public int NTime, ctime, dtime;
    Complex timeFactor; //jwt is the time factor.
    Complex Gamma0, Gamma1, Gamma2, Gamma3, Gamma4, Gamma5, Gamma6, Gamma7, Gamma8, Gamma9; //Reflection Coefficients at interfaces
    Complex Y0, Y1, Y2, Y3, Y4, Y5, Y6, Y7, Y8, Y9; //Admittances at each interface
    Complex Zinput, Yinput; //Impedance and Admittance at the input terminals 
    public double ZBoundHigh, ZBoundLow;
    int SPos0, SPos1, SPos2, SPos3, SPos4; //Integer representation of the position of the three stubs
    int SPos5, SPos6, SPos7, SPos8, SPos9; //Integer representation of the position of the three stubs
    
    public int iarray[];
    Complex  VPP[]; 
    private static final Complex one = new Complex(1.0,0.0);
    //private static final double epsilon0 = 8.8541878176E-12; // Units: F/m  exact value
    private static final double epsilon0 = 8.841941286E-12; //8.8541878176E-12; //Units: F/m  Approximate value
    private static final double mu0 = 1.25663706144E-6; //Units H/m
    private static final double light_velocity = Math.sqrt(1.0/(epsilon0*mu0)); //  Units m/s
    public boolean IsLoadShort, IsLoadOpen, IsLoadRegular, IsLoadImaginary;
    public boolean IsIncident, IsReflected, IsTotal, IsTcpVisible, IwantTraceOn, TraceWasOn;
    public boolean LicenseExpired;
    public boolean IsWindows = false;
    public boolean IsMac = false;
    
    public int this_month, today_week, this_year, this_hour, this_minute, today_month, 
	       today_year,this_zone, saving_time;
	       
    GregorianCalendar Greg = new GregorianCalendar();
    
    //THIS IS THE PARAMETER FOR ZOOM ===========================================
    public static int base_width = 1146;
    public static int base_height = 655;
    public double Xfactor = 0.86;
    
    //public double sfactor = 1.25;
    Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
    public int screenHeight = screenSize.height;
    public int screenWidth = screenSize.width;
    public int sfactor1 = screenSize.height;
    public int sfactor2 = screenSize.width;
    
    //public int screenHeight = 768;
    //public int screenWidth = 1360;
    //public int sfactor1 = 768;
    //public int sfactor2 = 1360;
    
    //public int screenHeight = 720;
    //public int screenWidth = 1280;
    //public int sfactor1 = 720;
    //public int sfactor2 = 1280;
    
    public double sfactor3 = Math.min(sfactor1, sfactor2);
    public double sfactor = MaestroA.rounder(Xfactor*(double)(sfactor3/base_height),2);
    
    // Look-up table to simplify zoom 
    public int ss2 = (int)Math.ceil(2*sfactor);
    public int s1 = (int)Math.ceil(1*sfactor);
    public int s2 = (int)Math.ceil(2*sfactor);
    public int s3 = (int)Math.ceil(3*sfactor);
    public int s4 = (int)Math.ceil(4*sfactor);
    public int s5 = (int)Math.ceil(5*sfactor);
    public int s6 = (int)Math.ceil(6*sfactor);
    public int s7 = (int)Math.ceil(7*sfactor);
    public int s8 = (int)Math.ceil(8*sfactor);
    public int s9 = (int)Math.ceil(9*sfactor);
    public int s10 = (int)Math.ceil(10*sfactor);
    public int s11 = (int)Math.ceil(11*sfactor);
    public int s12 = (int)Math.ceil(12*sfactor);
    public int s13 = (int)Math.ceil(13*sfactor);
    public int s14 = (int)Math.ceil(14*sfactor);
    public int s15 = (int)Math.ceil(15*sfactor);
    public int s16 = (int)Math.ceil(16*sfactor);
    public int s17 = (int)Math.ceil(17*sfactor);
    public int s18 = (int)Math.ceil(18*sfactor);
    public int s19 = (int)Math.ceil(19*sfactor);
    public int s20 = (int)Math.ceil(20*sfactor);
    public int s21 = (int)Math.ceil(21*sfactor);
    public int s22 = (int)Math.ceil(22*sfactor);
    public int s23 = (int)Math.ceil(23*sfactor);
    public int s24 = (int)Math.ceil(24*sfactor);
    public int s25 = (int)Math.ceil(25*sfactor);
    public int s26 = (int)Math.ceil(26*sfactor);
    public int s27 = (int)Math.ceil(27*sfactor);
    public int s28 = (int)Math.ceil(28*sfactor);
    public int s29 = (int)Math.ceil(29*sfactor);
    public int s30 = (int)Math.ceil(30*sfactor);
    public int s31 = (int)Math.ceil(31*sfactor);
    public int s32 = (int)Math.ceil(32*sfactor);
    public int s33 = (int)Math.ceil(33*sfactor);
    public int s34 = (int)Math.ceil(34*sfactor);
    public int s35 = (int)Math.ceil(35*sfactor);
    public int s36 = (int)Math.ceil(36*sfactor);
    public int s37 = (int)Math.ceil(37*sfactor);
    public int s38 = (int)Math.ceil(38*sfactor);
    public int s39 = (int)Math.ceil(39*sfactor);
    public int s40 = (int)Math.ceil(40*sfactor);
    public int s41 = (int)Math.ceil(41*sfactor);
    public int s42 = (int)Math.ceil(42*sfactor);
    public int s43 = (int)Math.ceil(43*sfactor);
    public int s44 = (int)Math.ceil(44*sfactor);
    public int s45 = (int)Math.ceil(45*sfactor);
    public int s46 = (int)Math.ceil(46*sfactor);
    public int s47 = (int)Math.ceil(47*sfactor);
    public int s48 = (int)Math.ceil(48*sfactor);
    public int s49 = (int)Math.ceil(49*sfactor);
    public int s50 = (int)Math.ceil(50*sfactor);
    public int s51 = (int)Math.ceil(51*sfactor);
    public int s52 = (int)Math.ceil(52*sfactor);
    public int s53 = (int)Math.ceil(53*sfactor);
    public int s54 = (int)Math.ceil(54*sfactor);
    public int s55 = (int)Math.ceil(55*sfactor);
    public int s56 = (int)Math.ceil(56*sfactor);
    public int s57 = (int)Math.ceil(57*sfactor);
    public int s58 = (int)Math.ceil(58*sfactor);
    public int s59 = (int)Math.ceil(59*sfactor);
    public int s60 = (int)Math.ceil(60*sfactor);
    public int s61 = (int)Math.ceil(61*sfactor);
    public int s62 = (int)Math.ceil(62*sfactor);
    public int s63 = (int)Math.ceil(63*sfactor);
    public int s64 = (int)Math.ceil(64*sfactor);
    public int s65 = (int)Math.ceil(65*sfactor);
    public int s66 = (int)Math.ceil(66*sfactor);
    public int s67 = (int)Math.ceil(67*sfactor);
    public int s68 = (int)Math.ceil(68*sfactor);
    public int s69 = (int)Math.ceil(69*sfactor);
    public int s70 = (int)Math.ceil(70*sfactor);
    public int s71 = (int)Math.ceil(71*sfactor);
    public int s72 = (int)Math.ceil(72*sfactor);
    public int s73 = (int)Math.ceil(73*sfactor);
    public int s74 = (int)Math.ceil(74*sfactor);
    public int s75 = (int)Math.ceil(75*sfactor);
    public int s76 = (int)Math.ceil(76*sfactor);
    public int s77 = (int)Math.ceil(77*sfactor);
    public int s78 = (int)Math.ceil(78*sfactor);
    public int s79 = (int)Math.ceil(79*sfactor);
    public int s80 = (int)Math.ceil(80*sfactor);
    public int s81 = (int)Math.ceil(81*sfactor);
    public int s82 = (int)Math.ceil(82*sfactor);
    public int s83 = (int)Math.ceil(83*sfactor);
    public int s84 = (int)Math.ceil(84*sfactor);
    public int s85 = (int)Math.ceil(85*sfactor);
    public int s86 = (int)Math.ceil(86*sfactor);
    public int s87 = (int)Math.ceil(87*sfactor);
    public int s88 = (int)Math.ceil(88*sfactor);
    public int s89 = (int)Math.ceil(89*sfactor);
    public int s90 = (int)Math.ceil(90*sfactor);
    public int s91 = (int)Math.ceil(91*sfactor);
    public int s92 = (int)Math.ceil(92*sfactor);
    public int s93 = (int)Math.ceil(93*sfactor);
    public int s94 = (int)Math.ceil(94*sfactor);
    public int s95 = (int)Math.ceil(95*sfactor);
    public int s96 = (int)Math.ceil(96*sfactor);
    public int s97 = (int)Math.ceil(97*sfactor);
    public int s98 = (int)Math.ceil(98*sfactor);
    public int s99 = (int)Math.ceil(99*sfactor);
    
    public int s100 = (int)Math.ceil(100*sfactor);
    public int s101 = (int)Math.ceil(101*sfactor);
    public int s102 = (int)Math.ceil(102*sfactor);
    public int s103 = (int)Math.ceil(103*sfactor);
    public int s104 = (int)Math.ceil(104*sfactor);
    public int s105 = (int)Math.ceil(105*sfactor);
    public int s106 = (int)Math.ceil(106*sfactor);
    public int s107 = (int)Math.ceil(107*sfactor);
    public int s108 = (int)Math.ceil(108*sfactor);
    public int s109 = (int)Math.ceil(109*sfactor);
    public int s110 = (int)Math.ceil(110*sfactor);
    public int s111 = (int)Math.ceil(111*sfactor);
    public int s112 = (int)Math.ceil(112*sfactor);
    public int s113 = (int)Math.ceil(113*sfactor);
    public int s114 = (int)Math.ceil(114*sfactor);
    public int s115 = (int)Math.ceil(115*sfactor);
    public int s116 = (int)Math.ceil(116*sfactor);
    public int s117 = (int)Math.ceil(117*sfactor);
    public int s118 = (int)Math.ceil(118*sfactor);
    public int s119 = (int)Math.ceil(119*sfactor);
    public int s120 = (int)Math.ceil(120*sfactor);
    public int s121 = (int)Math.ceil(121*sfactor);
    public int s122 = (int)Math.ceil(122*sfactor);
    public int s123 = (int)Math.ceil(123*sfactor);
    public int s124 = (int)Math.ceil(124*sfactor);
    public int s125 = (int)Math.ceil(125*sfactor);
    public int s126 = (int)Math.ceil(126*sfactor);
    public int s127 = (int)Math.ceil(127*sfactor);
    public int s128 = (int)Math.ceil(128*sfactor);
    public int s129 = (int)Math.ceil(129*sfactor);
    public int s130 = (int)Math.ceil(130*sfactor);
    public int s131 = (int)Math.ceil(131*sfactor);
    public int s132 = (int)Math.ceil(132*sfactor);
    public int s133 = (int)Math.ceil(133*sfactor);
    public int s134 = (int)Math.ceil(134*sfactor);
    public int s135 = (int)Math.ceil(135*sfactor);
    public int s136 = (int)Math.ceil(136*sfactor);
    public int s137 = (int)Math.ceil(137*sfactor);
    public int s138 = (int)Math.ceil(138*sfactor);
    public int s139 = (int)Math.ceil(139*sfactor);
    public int s140 = (int)Math.ceil(140*sfactor);
    public int s141 = (int)Math.ceil(141*sfactor);
    public int s142 = (int)Math.ceil(142*sfactor);
    public int s143 = (int)Math.ceil(143*sfactor);
    public int s144 = (int)Math.ceil(144*sfactor);
    public int s145 = (int)Math.ceil(145*sfactor);
    public int s146 = (int)Math.ceil(146*sfactor);
    public int s147 = (int)Math.ceil(147*sfactor);
    public int s148 = (int)Math.ceil(148*sfactor);
    public int s149 = (int)Math.ceil(149*sfactor);
    public int s150 = (int)Math.ceil(150*sfactor);
    public int s151 = (int)Math.ceil(151*sfactor);
    public int s152 = (int)Math.ceil(152*sfactor);
    public int s153 = (int)Math.ceil(153*sfactor);
    public int s154 = (int)Math.ceil(154*sfactor);
    public int s155 = (int)Math.ceil(155*sfactor);
    public int s156 = (int)Math.ceil(156*sfactor);
    public int s157 = (int)Math.ceil(157*sfactor);
    public int s158 = (int)Math.ceil(158*sfactor);
    public int s159 = (int)Math.ceil(159*sfactor);
    public int s160 = (int)Math.ceil(160*sfactor);
    public int s161 = (int)Math.ceil(161*sfactor);
    public int s162 = (int)Math.ceil(162*sfactor);
    public int s163 = (int)Math.ceil(163*sfactor);
    public int s164 = (int)Math.ceil(164*sfactor);
    public int s165 = (int)Math.ceil(165*sfactor);
    public int s166 = (int)Math.ceil(166*sfactor);
    public int s167 = (int)Math.ceil(167*sfactor);
    public int s168 = (int)Math.ceil(168*sfactor);
    public int s169 = (int)Math.ceil(169*sfactor);
    public int s170 = (int)Math.ceil(170*sfactor);
    public int s171 = (int)Math.ceil(171*sfactor);
    public int s172 = (int)Math.ceil(172*sfactor);
    public int s173 = (int)Math.ceil(173*sfactor);
    public int s174 = (int)Math.ceil(174*sfactor);
    public int s175 = (int)Math.ceil(175*sfactor);
    public int s176 = (int)Math.ceil(176*sfactor);
    public int s177 = (int)Math.ceil(177*sfactor);
    public int s178 = (int)Math.ceil(178*sfactor);
    public int s179 = (int)Math.ceil(179*sfactor);
    public int s180 = (int)Math.ceil(180*sfactor);
    public int s181 = (int)Math.ceil(181*sfactor);
    public int s182 = (int)Math.ceil(182*sfactor);
    public int s183 = (int)Math.ceil(183*sfactor);
    public int s184 = (int)Math.ceil(184*sfactor);
    public int s185 = (int)Math.ceil(185*sfactor);
    public int s186 = (int)Math.ceil(186*sfactor);
    public int s187 = (int)Math.ceil(187*sfactor);
    public int s188 = (int)Math.ceil(188*sfactor);
    public int s189 = (int)Math.ceil(189*sfactor);
    public int s190 = (int)Math.ceil(190*sfactor);
    public int s191 = (int)Math.ceil(191*sfactor);
    public int s192 = (int)Math.ceil(192*sfactor);
    public int s193 = (int)Math.ceil(193*sfactor);
    public int s194 = (int)Math.ceil(194*sfactor);
    public int s195 = (int)Math.ceil(195*sfactor);
    public int s196 = (int)Math.ceil(196*sfactor);
    public int s197 = (int)Math.ceil(197*sfactor);
    public int s198 = (int)Math.ceil(198*sfactor);
    public int s199 = (int)Math.ceil(199*sfactor);
    
    public int s200 = (int)Math.ceil(200*sfactor);
    public int s201 = (int)Math.ceil(201*sfactor);
    public int s202 = (int)Math.ceil(202*sfactor);
    public int s203 = (int)Math.ceil(203*sfactor);
    public int s204 = (int)Math.ceil(204*sfactor);
    public int s205 = (int)Math.ceil(205*sfactor);
    public int s206 = (int)Math.ceil(206*sfactor);
    public int s207 = (int)Math.ceil(207*sfactor);
    public int s208 = (int)Math.ceil(208*sfactor);
    public int s209 = (int)Math.ceil(209*sfactor);
    public int s210 = (int)Math.ceil(210*sfactor);
    public int s211 = (int)Math.ceil(211*sfactor);
    public int s212 = (int)Math.ceil(212*sfactor);
    public int s213 = (int)Math.ceil(213*sfactor);
    public int s214 = (int)Math.ceil(214*sfactor);
    public int s215 = (int)Math.ceil(215*sfactor);
    public int s216 = (int)Math.ceil(216*sfactor);
    public int s217 = (int)Math.ceil(217*sfactor);
    public int s218 = (int)Math.ceil(218*sfactor);
    public int s219 = (int)Math.ceil(219*sfactor);
    public int s220 = (int)Math.ceil(220*sfactor);
    public int s221 = (int)Math.ceil(221*sfactor);
    public int s222 = (int)Math.ceil(222*sfactor);
    public int s223 = (int)Math.ceil(223*sfactor);
    public int s224 = (int)Math.ceil(224*sfactor);
    public int s225 = (int)Math.ceil(225*sfactor);
    public int s226 = (int)Math.ceil(226*sfactor);
    public int s227 = (int)Math.ceil(227*sfactor);
    public int s228 = (int)Math.ceil(228*sfactor);
    public int s229 = (int)Math.ceil(229*sfactor);
    public int s230 = (int)Math.ceil(230*sfactor);
    public int s231 = (int)Math.ceil(231*sfactor);
    public int s232 = (int)Math.ceil(232*sfactor);
    public int s233 = (int)Math.ceil(233*sfactor);
    public int s234 = (int)Math.ceil(234*sfactor);
    public int s235 = (int)Math.ceil(235*sfactor);
    public int s236 = (int)Math.ceil(236*sfactor);
    public int s237 = (int)Math.ceil(237*sfactor);
    public int s238 = (int)Math.ceil(238*sfactor);
    public int s239 = (int)Math.ceil(239*sfactor);
    public int s240 = (int)Math.ceil(240*sfactor);
    public int s241 = (int)Math.ceil(241*sfactor);
    public int s242 = (int)Math.ceil(242*sfactor);
    public int s243 = (int)Math.ceil(243*sfactor);
    public int s244 = (int)Math.ceil(244*sfactor);
    public int s245 = (int)Math.ceil(245*sfactor);
    public int s246 = (int)Math.ceil(246*sfactor);
    public int s247 = (int)Math.ceil(247*sfactor);
    public int s248 = (int)Math.ceil(248*sfactor);
    public int s249 = (int)Math.ceil(249*sfactor);
    public int s250 = (int)Math.ceil(250*sfactor);
    public int s251 = (int)Math.ceil(251*sfactor);
    public int s252 = (int)Math.ceil(252*sfactor);
    public int s253 = (int)Math.ceil(253*sfactor);
    public int s254 = (int)Math.ceil(254*sfactor);
    public int s255 = (int)Math.ceil(255*sfactor);
    public int s256 = (int)Math.ceil(256*sfactor);
    public int s257 = (int)Math.ceil(257*sfactor);
    public int s258 = (int)Math.ceil(258*sfactor);
    public int s259 = (int)Math.ceil(259*sfactor);
    public int s260 = (int)Math.ceil(260*sfactor);
    public int s261 = (int)Math.ceil(261*sfactor);
    public int s262 = (int)Math.ceil(262*sfactor);
    public int s263 = (int)Math.ceil(263*sfactor);
    public int s264 = (int)Math.ceil(264*sfactor);
    public int s265 = (int)Math.ceil(265*sfactor);
    public int s266 = (int)Math.ceil(266*sfactor);
    public int s267 = (int)Math.ceil(267*sfactor);
    public int s268 = (int)Math.ceil(268*sfactor);
    public int s269 = (int)Math.ceil(269*sfactor);
    public int s270 = (int)Math.ceil(270*sfactor);
    public int s271 = (int)Math.ceil(271*sfactor);
    public int s272 = (int)Math.ceil(272*sfactor);
    public int s273 = (int)Math.ceil(273*sfactor);
    public int s274 = (int)Math.ceil(274*sfactor);
    public int s275 = (int)Math.ceil(275*sfactor);
    public int s276 = (int)Math.ceil(276*sfactor);
    public int s277 = (int)Math.ceil(277*sfactor);
    public int s278 = (int)Math.ceil(278*sfactor);
    public int s279 = (int)Math.ceil(279*sfactor);
    public int s280 = (int)Math.ceil(280*sfactor);
    public int s281 = (int)Math.ceil(281*sfactor);
    public int s282 = (int)Math.ceil(282*sfactor);
    public int s283 = (int)Math.ceil(283*sfactor);
    public int s284 = (int)Math.ceil(284*sfactor);
    public int s285 = (int)Math.ceil(285*sfactor);
    public int s286 = (int)Math.ceil(286*sfactor);
    public int s287 = (int)Math.ceil(287*sfactor);
    public int s288 = (int)Math.ceil(288*sfactor);
    public int s289 = (int)Math.ceil(289*sfactor);
    public int s290 = (int)Math.ceil(290*sfactor);
    public int s291 = (int)Math.ceil(291*sfactor);
    public int s292 = (int)Math.ceil(292*sfactor);
    public int s293 = (int)Math.ceil(293*sfactor);
    public int s294 = (int)Math.ceil(294*sfactor);
    public int s295 = (int)Math.ceil(295*sfactor);
    public int s296 = (int)Math.ceil(296*sfactor);
    public int s297 = (int)Math.ceil(297*sfactor);
    public int s298 = (int)Math.ceil(298*sfactor);
    public int s299 = (int)Math.ceil(299*sfactor);
    
    public int s300 = (int)Math.ceil(300*sfactor);
    public int s301 = (int)Math.ceil(301*sfactor);
    public int s302 = (int)Math.ceil(302*sfactor);
    public int s303 = (int)Math.ceil(303*sfactor);
    public int s304 = (int)Math.ceil(304*sfactor);
    public int s305 = (int)Math.ceil(305*sfactor);
    public int s306 = (int)Math.ceil(306*sfactor);
    public int s307 = (int)Math.ceil(307*sfactor);
    public int s308 = (int)Math.ceil(308*sfactor);
    public int s309 = (int)Math.ceil(309*sfactor);
    public int s310 = (int)Math.ceil(310*sfactor);
    public int s311 = (int)Math.ceil(311*sfactor);
    public int s312 = (int)Math.ceil(312*sfactor);
    public int s313 = (int)Math.ceil(313*sfactor);
    public int s314 = (int)Math.ceil(314*sfactor);
    public int s315 = (int)Math.ceil(315*sfactor);
    public int s316 = (int)Math.ceil(316*sfactor);
    public int s317 = (int)Math.ceil(317*sfactor);
    public int s318 = (int)Math.ceil(318*sfactor);
    public int s319 = (int)Math.ceil(319*sfactor);
    public int s320 = (int)Math.ceil(320*sfactor);
    public int s321 = (int)Math.ceil(321*sfactor);
    public int s322 = (int)Math.ceil(322*sfactor);
    public int s323 = (int)Math.ceil(323*sfactor);
    public int s324 = (int)Math.ceil(324*sfactor);
    public int s325 = (int)Math.ceil(325*sfactor);
    public int s326 = (int)Math.ceil(326*sfactor);
    public int s327 = (int)Math.ceil(327*sfactor);
    public int s328 = (int)Math.ceil(328*sfactor);
    public int s329 = (int)Math.ceil(329*sfactor);
    public int s330 = (int)Math.ceil(330*sfactor);
    public int s331 = (int)Math.ceil(331*sfactor);
    public int s332 = (int)Math.ceil(332*sfactor);
    public int s333 = (int)Math.ceil(333*sfactor);
    public int s334 = (int)Math.ceil(334*sfactor);
    public int s335 = (int)Math.ceil(335*sfactor);
    public int s336 = (int)Math.ceil(336*sfactor);
    public int s337 = (int)Math.ceil(337*sfactor);
    public int s338 = (int)Math.ceil(338*sfactor);
    public int s339 = (int)Math.ceil(339*sfactor);
    public int s340 = (int)Math.ceil(340*sfactor);
    public int s341 = (int)Math.ceil(341*sfactor);
    public int s342 = (int)Math.ceil(342*sfactor);
    public int s343 = (int)Math.ceil(343*sfactor);
    public int s344 = (int)Math.ceil(344*sfactor);
    public int s345 = (int)Math.ceil(345*sfactor);
    public int s346 = (int)Math.ceil(346*sfactor);
    public int s347 = (int)Math.ceil(347*sfactor);
    public int s348 = (int)Math.ceil(348*sfactor);
    public int s349 = (int)Math.ceil(349*sfactor);
    public int s350 = (int)Math.ceil(350*sfactor);
    public int s351 = (int)Math.ceil(351*sfactor);
    public int s352 = (int)Math.ceil(352*sfactor);
    public int s353 = (int)Math.ceil(353*sfactor);
    public int s354 = (int)Math.ceil(354*sfactor);
    public int s355 = (int)Math.ceil(355*sfactor);
    public int s356 = (int)Math.ceil(356*sfactor);
    public int s357 = (int)Math.ceil(357*sfactor);
    public int s358 = (int)Math.ceil(358*sfactor);
    public int s359 = (int)Math.ceil(359*sfactor);
    public int s360 = (int)Math.ceil(360*sfactor);
    public int s361 = (int)Math.ceil(361*sfactor);
    public int s362 = (int)Math.ceil(362*sfactor);
    public int s363 = (int)Math.ceil(363*sfactor);
    public int s364 = (int)Math.ceil(364*sfactor);
    public int s365 = (int)Math.ceil(365*sfactor);
    public int s366 = (int)Math.ceil(366*sfactor);
    public int s367 = (int)Math.ceil(367*sfactor);
    public int s368 = (int)Math.ceil(368*sfactor);
    public int s369 = (int)Math.ceil(369*sfactor);
    public int s370 = (int)Math.ceil(370*sfactor);
    public int s371 = (int)Math.ceil(371*sfactor);
    public int s372 = (int)Math.ceil(372*sfactor);
    public int s373 = (int)Math.ceil(373*sfactor);
    public int s374 = (int)Math.ceil(374*sfactor);
    public int s375 = (int)Math.ceil(375*sfactor);
    public int s376 = (int)Math.ceil(376*sfactor);
    public int s377 = (int)Math.ceil(377*sfactor);
    public int s378 = (int)Math.ceil(378*sfactor);
    public int s379 = (int)Math.ceil(379*sfactor);
    public int s380 = (int)Math.ceil(380*sfactor);
    public int s381 = (int)Math.ceil(381*sfactor);
    public int s382 = (int)Math.ceil(382*sfactor);
    public int s383 = (int)Math.ceil(383*sfactor);
    public int s384 = (int)Math.ceil(384*sfactor);
    public int s385 = (int)Math.ceil(385*sfactor);
    public int s386 = (int)Math.ceil(386*sfactor);
    public int s387 = (int)Math.ceil(387*sfactor);
    public int s388 = (int)Math.ceil(388*sfactor);
    public int s389 = (int)Math.ceil(389*sfactor);
    public int s390 = (int)Math.ceil(390*sfactor);
    public int s391 = (int)Math.ceil(391*sfactor);
    public int s392 = (int)Math.ceil(392*sfactor);
    public int s393 = (int)Math.ceil(393*sfactor);
    public int s394 = (int)Math.ceil(394*sfactor);
    public int s395 = (int)Math.ceil(395*sfactor);
    public int s396 = (int)Math.ceil(396*sfactor);
    public int s397 = (int)Math.ceil(397*sfactor);
    public int s398 = (int)Math.ceil(398*sfactor);
    public int s399 = (int)Math.ceil(399*sfactor);
    
    public int s400 = (int)Math.ceil(400*sfactor);
    public int s401 = (int)Math.ceil(401*sfactor);
    public int s402 = (int)Math.ceil(402*sfactor);
    public int s403 = (int)Math.ceil(403*sfactor);
    public int s404 = (int)Math.ceil(404*sfactor);
    public int s405 = (int)Math.ceil(405*sfactor);
    public int s406 = (int)Math.ceil(406*sfactor);
    public int s407 = (int)Math.ceil(407*sfactor);
    public int s408 = (int)Math.ceil(408*sfactor);
    public int s409 = (int)Math.ceil(409*sfactor);
    public int s410 = (int)Math.ceil(410*sfactor);
    public int s411 = (int)Math.ceil(411*sfactor);
    public int s412 = (int)Math.ceil(412*sfactor);
    public int s413 = (int)Math.ceil(413*sfactor);
    public int s414 = (int)Math.ceil(414*sfactor);
    public int s415 = (int)Math.ceil(415*sfactor);
    public int s416 = (int)Math.ceil(416*sfactor);
    public int s417 = (int)Math.ceil(417*sfactor);
    public int s418 = (int)Math.ceil(418*sfactor);
    public int s419 = (int)Math.ceil(419*sfactor);
    public int s420 = (int)Math.ceil(420*sfactor);
    public int s421 = (int)Math.ceil(421*sfactor);
    public int s422 = (int)Math.ceil(422*sfactor);
    public int s423 = (int)Math.ceil(423*sfactor);
    public int s424 = (int)Math.ceil(424*sfactor);
    public int s425 = (int)Math.ceil(425*sfactor);
    public int s426 = (int)Math.ceil(426*sfactor);
    public int s427 = (int)Math.ceil(427*sfactor);
    public int s428 = (int)Math.ceil(428*sfactor);
    public int s429 = (int)Math.ceil(429*sfactor);
    public int s430 = (int)Math.ceil(430*sfactor);
    public int s431 = (int)Math.ceil(431*sfactor);
    public int s432 = (int)Math.ceil(432*sfactor);
    public int s433 = (int)Math.ceil(433*sfactor);
    public int s434 = (int)Math.ceil(434*sfactor);
    public int s435 = (int)Math.ceil(435*sfactor);
    public int s436 = (int)Math.ceil(36*sfactor);
    public int s437 = (int)Math.ceil(37*sfactor);
    public int s438 = (int)Math.ceil(38*sfactor);
    public int s439 = (int)Math.ceil(439*sfactor);
    public int s440 = (int)Math.ceil(440*sfactor);
    public int s441 = (int)Math.ceil(441*sfactor);
    public int s442 = (int)Math.ceil(442*sfactor);
    public int s443 = (int)Math.ceil(443*sfactor);
    public int s444 = (int)Math.ceil(444*sfactor);
    public int s445 = (int)Math.ceil(445*sfactor);
    public int s446 = (int)Math.ceil(446*sfactor);
    public int s447 = (int)Math.ceil(447*sfactor);
    public int s448 = (int)Math.ceil(448*sfactor);
    public int s449 = (int)Math.ceil(449*sfactor);
    public int s450 = (int)Math.ceil(450*sfactor);
    public int s451 = (int)Math.ceil(451*sfactor);
    public int s452 = (int)Math.ceil(452*sfactor);
    public int s453 = (int)Math.ceil(453*sfactor);
    public int s454 = (int)Math.ceil(454*sfactor);
    public int s455 = (int)Math.ceil(455*sfactor);
    public int s456 = (int)Math.ceil(456*sfactor);
    public int s457 = (int)Math.ceil(457*sfactor);
    public int s458 = (int)Math.ceil(458*sfactor);
    public int s459 = (int)Math.ceil(459*sfactor);
    public int s460 = (int)Math.ceil(460*sfactor);
    public int s461 = (int)Math.ceil(461*sfactor);
    public int s462 = (int)Math.ceil(462*sfactor);
    public int s463 = (int)Math.ceil(463*sfactor);
    public int s464 = (int)Math.ceil(464*sfactor);
    public int s465 = (int)Math.ceil(465*sfactor);
    public int s466 = (int)Math.ceil(466*sfactor);
    public int s467 = (int)Math.ceil(467*sfactor);
    public int s468 = (int)Math.ceil(468*sfactor);
    public int s469 = (int)Math.ceil(469*sfactor);
    public int s470 = (int)Math.ceil(470*sfactor);
    public int s471 = (int)Math.ceil(471*sfactor);
    public int s472 = (int)Math.ceil(472*sfactor);
    public int s473 = (int)Math.ceil(473*sfactor);
    public int s474 = (int)Math.ceil(474*sfactor);
    public int s475 = (int)Math.ceil(475*sfactor);
    public int s476 = (int)Math.ceil(476*sfactor);
    public int s477 = (int)Math.ceil(477*sfactor);
    public int s478 = (int)Math.ceil(478*sfactor);
    public int s479 = (int)Math.ceil(479*sfactor);
    public int s480 = (int)Math.ceil(480*sfactor);
    public int s481 = (int)Math.ceil(481*sfactor);
    public int s482 = (int)Math.ceil(482*sfactor);
    public int s483 = (int)Math.ceil(483*sfactor);
    public int s484 = (int)Math.ceil(484*sfactor);
    public int s485 = (int)Math.ceil(485*sfactor);
    public int s486 = (int)Math.ceil(486*sfactor);
    public int s487 = (int)Math.ceil(487*sfactor);
    public int s488 = (int)Math.ceil(488*sfactor);
    public int s489 = (int)Math.ceil(489*sfactor);
    public int s490 = (int)Math.ceil(490*sfactor);
    public int s491 = (int)Math.ceil(491*sfactor);
    public int s492 = (int)Math.ceil(492*sfactor);
    public int s493 = (int)Math.ceil(493*sfactor);
    public int s494 = (int)Math.ceil(494*sfactor);
    public int s495 = (int)Math.ceil(495*sfactor);
    public int s496 = (int)Math.ceil(496*sfactor);
    public int s497 = (int)Math.ceil(497*sfactor);
    public int s498 = (int)Math.ceil(498*sfactor);
    public int s499 = (int)Math.ceil(499*sfactor);
    
    public int s500 = (int)Math.ceil(500*sfactor);
    public int s501 = (int)Math.ceil(501*sfactor);
    public int s502 = (int)Math.ceil(502*sfactor);
    public int s503 = (int)Math.ceil(503*sfactor);
    public int s504 = (int)Math.ceil(504*sfactor);
    public int s505 = (int)Math.ceil(505*sfactor);
    public int s506 = (int)Math.ceil(506*sfactor);
    public int s507 = (int)Math.ceil(507*sfactor);
    public int s508 = (int)Math.ceil(508*sfactor);
    public int s509 = (int)Math.ceil(509*sfactor);
    public int s510 = (int)Math.ceil(510*sfactor);
    public int s511 = (int)Math.ceil(511*sfactor);
    public int s512 = (int)Math.ceil(512*sfactor);
    public int s513 = (int)Math.ceil(513*sfactor);
    public int s514 = (int)Math.ceil(514*sfactor);
    public int s515 = (int)Math.ceil(515*sfactor);
    public int s516 = (int)Math.ceil(516*sfactor);
    public int s517 = (int)Math.ceil(517*sfactor);
    public int s518 = (int)Math.ceil(518*sfactor);
    public int s519 = (int)Math.ceil(519*sfactor);
    public int s520 = (int)Math.ceil(520*sfactor);
    public int s521 = (int)Math.ceil(521*sfactor);
    public int s522 = (int)Math.ceil(522*sfactor);
    public int s523 = (int)Math.ceil(523*sfactor);
    public int s524 = (int)Math.ceil(524*sfactor);
    public int s525 = (int)Math.ceil(525*sfactor);
    public int s526 = (int)Math.ceil(526*sfactor);
    public int s527 = (int)Math.ceil(527*sfactor);
    public int s528 = (int)Math.ceil(528*sfactor);
    public int s529 = (int)Math.ceil(529*sfactor);
    public int s530 = (int)Math.ceil(530*sfactor);
    public int s531 = (int)Math.ceil(531*sfactor);
    public int s532 = (int)Math.ceil(532*sfactor);
    public int s533 = (int)Math.ceil(533*sfactor);
    public int s534 = (int)Math.ceil(534*sfactor);
    public int s535 = (int)Math.ceil(535*sfactor);
    public int s536 = (int)Math.ceil(536*sfactor);
    public int s537 = (int)Math.ceil(537*sfactor);
    public int s538 = (int)Math.ceil(538*sfactor);
    public int s539 = (int)Math.ceil(539*sfactor);
    public int s540 = (int)Math.ceil(540*sfactor);
    public int s541 = (int)Math.ceil(541*sfactor);
    public int s542 = (int)Math.ceil(542*sfactor);
    public int s543 = (int)Math.ceil(543*sfactor);
    public int s544 = (int)Math.ceil(544*sfactor);
    public int s545 = (int)Math.ceil(545*sfactor);
    public int s546 = (int)Math.ceil(546*sfactor);
    public int s547 = (int)Math.ceil(547*sfactor);
    public int s548 = (int)Math.ceil(548*sfactor);
    public int s549 = (int)Math.ceil(549*sfactor);
    public int s550 = (int)Math.ceil(550*sfactor);
    public int s551 = (int)Math.ceil(551*sfactor);
    public int s552 = (int)Math.ceil(552*sfactor);
    public int s553 = (int)Math.ceil(553*sfactor);
    public int s554 = (int)Math.ceil(554*sfactor);
    public int s555 = (int)Math.ceil(555*sfactor);
    public int s556 = (int)Math.ceil(556*sfactor);
    public int s557 = (int)Math.ceil(557*sfactor);
    public int s558 = (int)Math.ceil(558*sfactor);
    public int s559 = (int)Math.ceil(559*sfactor);
    public int s560 = (int)Math.ceil(560*sfactor);
    public int s561 = (int)Math.ceil(561*sfactor);
    public int s562 = (int)Math.ceil(562*sfactor);
    public int s563 = (int)Math.ceil(563*sfactor);
    public int s564 = (int)Math.ceil(564*sfactor);
    public int s565 = (int)Math.ceil(565*sfactor);
    public int s566 = (int)Math.ceil(566*sfactor);
    public int s567 = (int)Math.ceil(567*sfactor);
    public int s568 = (int)Math.ceil(568*sfactor);
    public int s569 = (int)Math.ceil(569*sfactor);
    public int s570 = (int)Math.ceil(570*sfactor);
    public int s571 = (int)Math.ceil(571*sfactor);
    public int s572 = (int)Math.ceil(572*sfactor);
    public int s573 = (int)Math.ceil(573*sfactor);
    public int s574 = (int)Math.ceil(574*sfactor);
    public int s575 = (int)Math.ceil(575*sfactor);
    public int s576 = (int)Math.ceil(576*sfactor);
    public int s577 = (int)Math.ceil(577*sfactor);
    public int s578 = (int)Math.ceil(578*sfactor);
    public int s579 = (int)Math.ceil(579*sfactor);
    public int s580 = (int)Math.ceil(580*sfactor);
    public int s581 = (int)Math.ceil(581*sfactor);
    public int s582 = (int)Math.ceil(582*sfactor);
    public int s583 = (int)Math.ceil(583*sfactor);
    public int s584 = (int)Math.ceil(584*sfactor);
    public int s585 = (int)Math.ceil(585*sfactor);
    public int s586 = (int)Math.ceil(586*sfactor);
    public int s587 = (int)Math.ceil(587*sfactor);
    public int s588 = (int)Math.ceil(588*sfactor);
    public int s589 = (int)Math.ceil(589*sfactor);
    public int s590 = (int)Math.ceil(590*sfactor);
    public int s591 = (int)Math.ceil(591*sfactor);
    public int s592 = (int)Math.ceil(592*sfactor);
    public int s593 = (int)Math.ceil(593*sfactor);
    public int s594 = (int)Math.ceil(594*sfactor);
    public int s595 = (int)Math.ceil(595*sfactor);
    public int s596 = (int)Math.ceil(596*sfactor);
    public int s597 = (int)Math.ceil(597*sfactor);
    public int s598 = (int)Math.ceil(598*sfactor);
    public int s599 = (int)Math.ceil(599*sfactor);
    
    public int s600 = (int)Math.ceil(600*sfactor);
    public int s601 = (int)Math.ceil(601*sfactor);
    public int s602 = (int)Math.ceil(602*sfactor);
    public int s603 = (int)Math.ceil(603*sfactor);
    public int s604 = (int)Math.ceil(604*sfactor);
    public int s605 = (int)Math.ceil(605*sfactor);
    public int s606 = (int)Math.ceil(606*sfactor);
    public int s607 = (int)Math.ceil(607*sfactor);
    public int s608 = (int)Math.ceil(608*sfactor);
    public int s609 = (int)Math.ceil(609*sfactor);
    public int s610 = (int)Math.ceil(610*sfactor);
    public int s611 = (int)Math.ceil(611*sfactor);
    public int s612 = (int)Math.ceil(612*sfactor);
    public int s613 = (int)Math.ceil(613*sfactor);
    public int s614 = (int)Math.ceil(614*sfactor);
    public int s615 = (int)Math.ceil(615*sfactor);
    public int s616 = (int)Math.ceil(616*sfactor);
    public int s617 = (int)Math.ceil(617*sfactor);
    public int s618 = (int)Math.ceil(618*sfactor);
    public int s619 = (int)Math.ceil(619*sfactor);
    public int s620 = (int)Math.ceil(620*sfactor);
    public int s621 = (int)Math.ceil(621*sfactor);
    public int s622 = (int)Math.ceil(622*sfactor);
    public int s623 = (int)Math.ceil(623*sfactor);
    public int s624 = (int)Math.ceil(624*sfactor);
    public int s625 = (int)Math.ceil(625*sfactor);
    public int s626 = (int)Math.ceil(626*sfactor);
    public int s627 = (int)Math.ceil(627*sfactor);
    public int s628 = (int)Math.ceil(628*sfactor);
    public int s629 = (int)Math.ceil(629*sfactor);
    public int s630 = (int)Math.ceil(630*sfactor);
    public int s631 = (int)Math.ceil(631*sfactor);
    public int s632 = (int)Math.ceil(632*sfactor);
    public int s633 = (int)Math.ceil(633*sfactor);
    public int s634 = (int)Math.ceil(634*sfactor);
    public int s635 = (int)Math.ceil(635*sfactor);
    public int s636 = (int)Math.ceil(636*sfactor);
    public int s637 = (int)Math.ceil(637*sfactor);
    public int s638 = (int)Math.ceil(638*sfactor);
    public int s639 = (int)Math.ceil(639*sfactor);
    public int s640 = (int)Math.ceil(640*sfactor);
    public int s641 = (int)Math.ceil(641*sfactor);
    public int s642 = (int)Math.ceil(642*sfactor);
    public int s643 = (int)Math.ceil(643*sfactor);
    public int s644 = (int)Math.ceil(644*sfactor);
    public int s645 = (int)Math.ceil(645*sfactor);
    public int s646 = (int)Math.ceil(646*sfactor);
    public int s647 = (int)Math.ceil(647*sfactor);
    public int s648 = (int)Math.ceil(648*sfactor);
    public int s649 = (int)Math.ceil(649*sfactor);
    public int s650 = (int)Math.ceil(650*sfactor);
    public int s651 = (int)Math.ceil(651*sfactor);
    public int s652 = (int)Math.ceil(652*sfactor);
    public int s653 = (int)Math.ceil(653*sfactor);
    public int s654 = (int)Math.ceil(54*sfactor);
    public int s655 = (int)Math.ceil(655*sfactor);
    public int s656 = (int)Math.ceil(656*sfactor);
    public int s657 = (int)Math.ceil(657*sfactor);
    public int s658 = (int)Math.ceil(658*sfactor);
    public int s659 = (int)Math.ceil(659*sfactor);
    public int s660 = (int)Math.ceil(660*sfactor);
    public int s661 = (int)Math.ceil(661*sfactor);
    public int s662 = (int)Math.ceil(662*sfactor);
    public int s663 = (int)Math.ceil(663*sfactor);
    public int s664 = (int)Math.ceil(664*sfactor);
    public int s665 = (int)Math.ceil(665*sfactor);
    public int s666 = (int)Math.ceil(666*sfactor);
    public int s667 = (int)Math.ceil(667*sfactor);
    public int s668 = (int)Math.ceil(668*sfactor);
    public int s669 = (int)Math.ceil(669*sfactor);
    public int s670 = (int)Math.ceil(670*sfactor);
    public int s671 = (int)Math.ceil(671*sfactor);
    public int s672 = (int)Math.ceil(672*sfactor);
    public int s673 = (int)Math.ceil(673*sfactor);
    public int s674 = (int)Math.ceil(674*sfactor);
    public int s675 = (int)Math.ceil(675*sfactor);
    public int s676 = (int)Math.ceil(676*sfactor);
    public int s677 = (int)Math.ceil(677*sfactor);
    public int s678 = (int)Math.ceil(678*sfactor);
    public int s679 = (int)Math.ceil(679*sfactor);
    public int s680 = (int)Math.ceil(680*sfactor);
    public int s681 = (int)Math.ceil(681*sfactor);
    public int s682 = (int)Math.ceil(682*sfactor);
    public int s683 = (int)Math.ceil(683*sfactor);
    public int s684 = (int)Math.ceil(684*sfactor);
    public int s685 = (int)Math.ceil(685*sfactor);
    public int s686 = (int)Math.ceil(686*sfactor);
    public int s687 = (int)Math.ceil(687*sfactor);
    public int s688 = (int)Math.ceil(688*sfactor);
    public int s689 = (int)Math.ceil(689*sfactor);
    public int s690 = (int)Math.ceil(690*sfactor);
    public int s691 = (int)Math.ceil(691*sfactor);
    public int s692 = (int)Math.ceil(692*sfactor);
    public int s693 = (int)Math.ceil(693*sfactor);
    public int s694 = (int)Math.ceil(694*sfactor);
    public int s695 = (int)Math.ceil(695*sfactor);
    public int s696 = (int)Math.ceil(696*sfactor);
    public int s697 = (int)Math.ceil(697*sfactor);
    public int s698 = (int)Math.ceil(698*sfactor);
    public int s699 = (int)Math.ceil(699*sfactor);
        
    public int s700 = (int)Math.ceil(700*sfactor);
    public int s701 = (int)Math.ceil(701*sfactor);
    public int s702 = (int)Math.ceil(702*sfactor);
    public int s703 = (int)Math.ceil(703*sfactor);
    public int s704 = (int)Math.ceil(704*sfactor);
    public int s705 = (int)Math.ceil(705*sfactor);
    public int s706 = (int)Math.ceil(706*sfactor);
    public int s707 = (int)Math.ceil(707*sfactor);
    public int s708 = (int)Math.ceil(708*sfactor);
    public int s709 = (int)Math.ceil(709*sfactor);
    public int s710 = (int)Math.ceil(710*sfactor);
    public int s711 = (int)Math.ceil(711*sfactor);
    public int s712 = (int)Math.ceil(712*sfactor);
    public int s713 = (int)Math.ceil(713*sfactor);
    public int s714 = (int)Math.ceil(714*sfactor);
    public int s715 = (int)Math.ceil(715*sfactor);
    public int s716 = (int)Math.ceil(716*sfactor);
    public int s717 = (int)Math.ceil(717*sfactor);
    public int s718 = (int)Math.ceil(718*sfactor);
    public int s719 = (int)Math.ceil(719*sfactor);
    public int s720 = (int)Math.ceil(720*sfactor);
    public int s721 = (int)Math.ceil(721*sfactor);
    public int s722 = (int)Math.ceil(722*sfactor);
    public int s723 = (int)Math.ceil(723*sfactor);
    public int s724 = (int)Math.ceil(724*sfactor);
    public int s725 = (int)Math.ceil(725*sfactor);
    public int s726 = (int)Math.ceil(726*sfactor);
    public int s727 = (int)Math.ceil(727*sfactor);
    public int s728 = (int)Math.ceil(728*sfactor);
    public int s729 = (int)Math.ceil(729*sfactor);
    public int s730 = (int)Math.ceil(730*sfactor);
    public int s731 = (int)Math.ceil(731*sfactor);
    public int s732 = (int)Math.ceil(732*sfactor);
    public int s733 = (int)Math.ceil(733*sfactor);
    public int s734 = (int)Math.ceil(734*sfactor);
    public int s735 = (int)Math.ceil(735*sfactor);
    public int s736 = (int)Math.ceil(736*sfactor);
    public int s737 = (int)Math.ceil(737*sfactor);
    public int s738 = (int)Math.ceil(738*sfactor);
    public int s739 = (int)Math.ceil(739*sfactor);
    public int s740 = (int)Math.ceil(740*sfactor);
    public int s741 = (int)Math.ceil(741*sfactor);
    public int s742 = (int)Math.ceil(742*sfactor);
    public int s743 = (int)Math.ceil(743*sfactor);
    public int s744 = (int)Math.ceil(744*sfactor);
    public int s745 = (int)Math.ceil(745*sfactor);
    public int s746 = (int)Math.ceil(746*sfactor);
    public int s747 = (int)Math.ceil(747*sfactor);
    public int s748 = (int)Math.ceil(748*sfactor);
    public int s749 = (int)Math.ceil(749*sfactor);
    public int s750 = (int)Math.ceil(750*sfactor);
    public int s751 = (int)Math.ceil(751*sfactor);
    public int s752 = (int)Math.ceil(752*sfactor);
    public int s753 = (int)Math.ceil(753*sfactor);
    public int s754 = (int)Math.ceil(754*sfactor);
    public int s755 = (int)Math.ceil(755*sfactor);
    public int s756 = (int)Math.ceil(756*sfactor);
    public int s757 = (int)Math.ceil(757*sfactor);
    public int s758 = (int)Math.ceil(758*sfactor);
    public int s759 = (int)Math.ceil(759*sfactor);
    public int s760 = (int)Math.ceil(760*sfactor);
    public int s761 = (int)Math.ceil(761*sfactor);
    public int s762 = (int)Math.ceil(762*sfactor);
    public int s763 = (int)Math.ceil(763*sfactor);
    public int s764 = (int)Math.ceil(764*sfactor);
    public int s765 = (int)Math.ceil(765*sfactor);
    public int s766 = (int)Math.ceil(766*sfactor);
    public int s767 = (int)Math.ceil(767*sfactor);
    public int s768 = (int)Math.ceil(768*sfactor);
    public int s769 = (int)Math.ceil(769*sfactor);
    public int s770 = (int)Math.ceil(770*sfactor);
    public int s771 = (int)Math.ceil(771*sfactor);
    public int s772 = (int)Math.ceil(772*sfactor);
    public int s773 = (int)Math.ceil(773*sfactor);
    public int s774 = (int)Math.ceil(774*sfactor);
    public int s775 = (int)Math.ceil(775*sfactor);
    public int s776 = (int)Math.ceil(776*sfactor);
    public int s777 = (int)Math.ceil(777*sfactor);
    public int s778 = (int)Math.ceil(778*sfactor);
    public int s779 = (int)Math.ceil(779*sfactor);
    public int s780 = (int)Math.ceil(780*sfactor);
    public int s781 = (int)Math.ceil(781*sfactor);
    public int s782 = (int)Math.ceil(782*sfactor);
    public int s783 = (int)Math.ceil(783*sfactor);
    public int s784 = (int)Math.ceil(784*sfactor);
    public int s785 = (int)Math.ceil(785*sfactor);
    public int s786 = (int)Math.ceil(786*sfactor);
    public int s787 = (int)Math.ceil(787*sfactor);
    public int s788 = (int)Math.ceil(788*sfactor);
    public int s789 = (int)Math.ceil(789*sfactor);
    public int s790 = (int)Math.ceil(790*sfactor);
    public int s791 = (int)Math.ceil(791*sfactor);
    public int s792 = (int)Math.ceil(792*sfactor);
    public int s793 = (int)Math.ceil(793*sfactor);
    public int s794 = (int)Math.ceil(794*sfactor);
    public int s795 = (int)Math.ceil(795*sfactor);
    public int s796 = (int)Math.ceil(796*sfactor);
    public int s797 = (int)Math.ceil(797*sfactor);
    public int s798 = (int)Math.ceil(798*sfactor);
    public int s799 = (int)Math.ceil(799*sfactor);
    
    public int s800 = (int)Math.ceil(800*sfactor);
    public int s801 = (int)Math.ceil(801*sfactor);
    public int s802 = (int)Math.ceil(802*sfactor);
    public int s803 = (int)Math.ceil(803*sfactor);
    public int s804 = (int)Math.ceil(804*sfactor);
    public int s805 = (int)Math.ceil(805*sfactor);
    public int s806 = (int)Math.ceil(806*sfactor);
    public int s807 = (int)Math.ceil(807*sfactor);
    public int s808 = (int)Math.ceil(808*sfactor);
    public int s809 = (int)Math.ceil(809*sfactor);
    public int s810 = (int)Math.ceil(810*sfactor);
    public int s811 = (int)Math.ceil(811*sfactor);
    public int s812 = (int)Math.ceil(812*sfactor);
    public int s813 = (int)Math.ceil(813*sfactor);
    public int s814 = (int)Math.ceil(814*sfactor);
    public int s815 = (int)Math.ceil(815*sfactor);
    public int s816 = (int)Math.ceil(816*sfactor);
    public int s817 = (int)Math.ceil(817*sfactor);
    public int s818 = (int)Math.ceil(818*sfactor);
    public int s819 = (int)Math.ceil(819*sfactor);
    public int s820 = (int)Math.ceil(820*sfactor);
    public int s821 = (int)Math.ceil(821*sfactor);
    public int s822 = (int)Math.ceil(822*sfactor);
    public int s823 = (int)Math.ceil(823*sfactor);
    public int s824 = (int)Math.ceil(824*sfactor);
    public int s825 = (int)Math.ceil(825*sfactor);
    public int s826 = (int)Math.ceil(826*sfactor);
    public int s827 = (int)Math.ceil(827*sfactor);
    public int s828 = (int)Math.ceil(828*sfactor);
    public int s829 = (int)Math.ceil(829*sfactor);
    public int s830 = (int)Math.ceil(830*sfactor);
    public int s831 = (int)Math.ceil(831*sfactor);
    public int s832 = (int)Math.ceil(832*sfactor);
    public int s833 = (int)Math.ceil(833*sfactor);
    public int s834 = (int)Math.ceil(834*sfactor);
    public int s835 = (int)Math.ceil(835*sfactor);
    public int s836 = (int)Math.ceil(836*sfactor);
    public int s837 = (int)Math.ceil(837*sfactor);
    public int s838 = (int)Math.ceil(838*sfactor);
    public int s839 = (int)Math.ceil(839*sfactor);
    public int s840 = (int)Math.ceil(840*sfactor);
    public int s841 = (int)Math.ceil(841*sfactor);
    public int s842 = (int)Math.ceil(842*sfactor);
    public int s843 = (int)Math.ceil(843*sfactor);
    public int s844 = (int)Math.ceil(844*sfactor);
    public int s845 = (int)Math.ceil(845*sfactor);
    public int s846 = (int)Math.ceil(846*sfactor);
    public int s847 = (int)Math.ceil(847*sfactor);
    public int s848 = (int)Math.ceil(848*sfactor);
    public int s849 = (int)Math.ceil(849*sfactor);
    public int s850 = (int)Math.ceil(850*sfactor);
    public int s851 = (int)Math.ceil(851*sfactor);
    public int s852 = (int)Math.ceil(852*sfactor);
    public int s853 = (int)Math.ceil(853*sfactor);
    public int s854 = (int)Math.ceil(854*sfactor);
    public int s855 = (int)Math.ceil(855*sfactor);
    public int s856 = (int)Math.ceil(856*sfactor);
    public int s857 = (int)Math.ceil(857*sfactor);
    public int s858 = (int)Math.ceil(858*sfactor);
    public int s859 = (int)Math.ceil(859*sfactor);
    public int s860 = (int)Math.ceil(860*sfactor);
    public int s861 = (int)Math.ceil(861*sfactor);
    public int s862 = (int)Math.ceil(862*sfactor);
    public int s863 = (int)Math.ceil(863*sfactor);
    public int s864 = (int)Math.ceil(864*sfactor);
    public int s865 = (int)Math.ceil(865*sfactor);
    public int s866 = (int)Math.ceil(866*sfactor);
    public int s867 = (int)Math.ceil(867*sfactor);
    public int s868 = (int)Math.ceil(868*sfactor);
    public int s869 = (int)Math.ceil(869*sfactor);
    public int s870 = (int)Math.ceil(870*sfactor);
    public int s871 = (int)Math.ceil(871*sfactor);
    public int s872 = (int)Math.ceil(872*sfactor);
    public int s873 = (int)Math.ceil(873*sfactor);
    public int s874 = (int)Math.ceil(874*sfactor);
    public int s875 = (int)Math.ceil(875*sfactor);
    public int s876 = (int)Math.ceil(876*sfactor);
    public int s877 = (int)Math.ceil(877*sfactor);
    public int s878 = (int)Math.ceil(878*sfactor);
    public int s879 = (int)Math.ceil(879*sfactor);
    public int s880 = (int)Math.ceil(880*sfactor);
    public int s881 = (int)Math.ceil(881*sfactor);
    public int s882 = (int)Math.ceil(882*sfactor);
    public int s883 = (int)Math.ceil(883*sfactor);
    public int s884 = (int)Math.ceil(884*sfactor);
    public int s885 = (int)Math.ceil(885*sfactor);
    public int s886 = (int)Math.ceil(886*sfactor);
    public int s887 = (int)Math.ceil(887*sfactor);
    public int s888 = (int)Math.ceil(888*sfactor);
    public int s889 = (int)Math.ceil(889*sfactor);
    public int s890 = (int)Math.ceil(890*sfactor);
    public int s891 = (int)Math.ceil(891*sfactor);
    public int s892 = (int)Math.ceil(892*sfactor);
    public int s893 = (int)Math.ceil(893*sfactor);
    public int s894 = (int)Math.ceil(894*sfactor);
    public int s895 = (int)Math.ceil(895*sfactor);
    public int s896 = (int)Math.ceil(896*sfactor);
    public int s897 = (int)Math.ceil(897*sfactor);
    public int s898 = (int)Math.ceil(898*sfactor);
    public int s899 = (int)Math.ceil(899*sfactor);
    
    public int s900 = (int)Math.ceil(900*sfactor);
    public int s901 = (int)Math.ceil(901*sfactor);
    public int s902 = (int)Math.ceil(902*sfactor);
    public int s903 = (int)Math.ceil(903*sfactor);
    public int s904 = (int)Math.ceil(904*sfactor);
    public int s905 = (int)Math.ceil(905*sfactor);
    public int s906 = (int)Math.ceil(906*sfactor);
    public int s907 = (int)Math.ceil(907*sfactor);
    public int s908 = (int)Math.ceil(908*sfactor);
    public int s909 = (int)Math.ceil(909*sfactor);
    public int s910 = (int)Math.ceil(910*sfactor);
    public int s911 = (int)Math.ceil(911*sfactor);
    public int s912 = (int)Math.ceil(912*sfactor);
    public int s913 = (int)Math.ceil(913*sfactor);
    public int s914 = (int)Math.ceil(914*sfactor);
    public int s915 = (int)Math.ceil(915*sfactor);
    public int s916 = (int)Math.ceil(916*sfactor);
    public int s917 = (int)Math.ceil(917*sfactor);
    public int s918 = (int)Math.ceil(918*sfactor);
    public int s919 = (int)Math.ceil(919*sfactor);
    public int s920 = (int)Math.ceil(920*sfactor);
    public int s921 = (int)Math.ceil(921*sfactor);
    public int s922 = (int)Math.ceil(922*sfactor);
    public int s923 = (int)Math.ceil(923*sfactor);
    public int s924 = (int)Math.ceil(924*sfactor);
    public int s925 = (int)Math.ceil(925*sfactor);
    public int s926 = (int)Math.ceil(926*sfactor);
    public int s927 = (int)Math.ceil(927*sfactor);
    public int s928 = (int)Math.ceil(928*sfactor);
    public int s929 = (int)Math.ceil(929*sfactor);
    public int s930 = (int)Math.ceil(930*sfactor);
    public int s931 = (int)Math.ceil(931*sfactor);
    public int s932 = (int)Math.ceil(932*sfactor);
    public int s933 = (int)Math.ceil(933*sfactor);
    public int s934 = (int)Math.ceil(934*sfactor);
    public int s935 = (int)Math.ceil(935*sfactor);
    public int s936 = (int)Math.ceil(936*sfactor);
    public int s937 = (int)Math.ceil(937*sfactor);
    public int s938 = (int)Math.ceil(938*sfactor);
    public int s939 = (int)Math.ceil(939*sfactor);
    public int s940 = (int)Math.ceil(940*sfactor);
    public int s941 = (int)Math.ceil(941*sfactor);
    public int s942 = (int)Math.ceil(942*sfactor);
    public int s943 = (int)Math.ceil(943*sfactor);
    public int s944 = (int)Math.ceil(944*sfactor);
    public int s945 = (int)Math.ceil(945*sfactor);
    public int s946 = (int)Math.ceil(946*sfactor);
    public int s947 = (int)Math.ceil(947*sfactor);
    public int s948 = (int)Math.ceil(948*sfactor);
    public int s949 = (int)Math.ceil(949*sfactor);
    public int s950 = (int)Math.ceil(950*sfactor);
    public int s951 = (int)Math.ceil(951*sfactor);
    public int s952 = (int)Math.ceil(952*sfactor);
    public int s953 = (int)Math.ceil(953*sfactor);
    public int s954 = (int)Math.ceil(954*sfactor);
    public int s955 = (int)Math.ceil(955*sfactor);
    public int s956 = (int)Math.ceil(956*sfactor);
    public int s957 = (int)Math.ceil(957*sfactor);
    public int s958 = (int)Math.ceil(958*sfactor);
    public int s959 = (int)Math.ceil(959*sfactor);
    public int s960 = (int)Math.ceil(960*sfactor);
    public int s961 = (int)Math.ceil(961*sfactor);
    public int s962 = (int)Math.ceil(962*sfactor);
    public int s963 = (int)Math.ceil(963*sfactor);
    public int s964 = (int)Math.ceil(964*sfactor);
    public int s965 = (int)Math.ceil(965*sfactor);
    public int s966 = (int)Math.ceil(966*sfactor);
    public int s967 = (int)Math.ceil(967*sfactor);
    public int s968 = (int)Math.ceil(968*sfactor);
    public int s969 = (int)Math.ceil(969*sfactor);
    public int s970 = (int)Math.ceil(970*sfactor);
    public int s971 = (int)Math.ceil(971*sfactor);
    public int s972 = (int)Math.ceil(972*sfactor);
    public int s973 = (int)Math.ceil(973*sfactor);
    public int s974 = (int)Math.ceil(974*sfactor);
    public int s975 = (int)Math.ceil(975*sfactor);
    public int s976 = (int)Math.ceil(976*sfactor);
    public int s977 = (int)Math.ceil(977*sfactor);
    public int s978 = (int)Math.ceil(978*sfactor);
    public int s979 = (int)Math.ceil(979*sfactor);
    public int s980 = (int)Math.ceil(980*sfactor);
    public int s981 = (int)Math.ceil(981*sfactor);
    public int s982 = (int)Math.ceil(982*sfactor);
    public int s983 = (int)Math.ceil(983*sfactor);
    public int s984 = (int)Math.ceil(984*sfactor);
    public int s985 = (int)Math.ceil(985*sfactor);
    public int s986 = (int)Math.ceil(986*sfactor);
    public int s987 = (int)Math.ceil(987*sfactor);
    public int s988 = (int)Math.ceil(988*sfactor);
    public int s989 = (int)Math.ceil(989*sfactor);
    public int s990 = (int)Math.ceil(990*sfactor);
    public int s991 = (int)Math.ceil(991*sfactor);
    public int s992 = (int)Math.ceil(992*sfactor);
    public int s993 = (int)Math.ceil(993*sfactor);
    public int s994 = (int)Math.ceil(994*sfactor);
    public int s995 = (int)Math.ceil(995*sfactor);
    public int s996 = (int)Math.ceil(996*sfactor);
    public int s997 = (int)Math.ceil(997*sfactor);
    public int s998 = (int)Math.ceil(998*sfactor);
    public int s999 = (int)Math.ceil(999*sfactor);
    
    public int s1000 = (int)Math.ceil(1000*sfactor);
    public int s1231 = (int)Math.ceil(1231*sfactor);
    public int s1237 = (int)Math.ceil(1237*sfactor);
    public int s100000 = (int)Math.ceil(100000*sfactor);

    //------------------------------------------------------------------------------ 
    // Look-up table for automatic adjustment of fonts
    //------------------------------------------------------------------------------
    public int font8 = (int)Math.floor(8*sfactor);
    public int font9 = (int)Math.floor(9*sfactor);
    public int font10 = (int)Math.floor(10*sfactor);
    public int font11 = (int)Math.floor(11*sfactor);
    public int font12 = (int)Math.floor(12*sfactor);
    public int font13 = (int)Math.floor(13*sfactor);
    public int font14 = (int)Math.floor(14*sfactor);
    public int font15 = (int)Math.floor(15*sfactor);
    public int font16 = (int)Math.floor(16*sfactor);
    public int font17 = (int)Math.floor(17*sfactor);
    public int font18 = (int)Math.floor(18*sfactor);
    public int font19 = (int)Math.floor(19*sfactor);
    public int font20 = (int)Math.floor(20*sfactor);
    public int font21 = (int)Math.floor(21*sfactor);
    public int font22 = (int)Math.floor(22*sfactor);
    public int font23 = (int)Math.floor(23*sfactor);
    public int font24 = (int)Math.floor(24*sfactor);
    public int font25 = (int)Math.floor(25*sfactor);
    public int font26 = (int)Math.floor(26*sfactor);
    public int font27 = (int)Math.floor(27*sfactor);
    public int font28 = (int)Math.floor(28*sfactor);
    public int font29 = (int)Math.floor(29*sfactor);
    public int font30 = (int)Math.floor(30*sfactor);
    public int font31 = (int)Math.floor(31*sfactor);
    public int font32 = (int)Math.floor(32*sfactor);
    public int font33 = (int)Math.floor(33*sfactor);
    public int font34 = (int)Math.floor(34*sfactor);
    public int font35 = (int)Math.floor(35*sfactor);
    public int font36 = (int)Math.floor(36*sfactor);
    public int font37 = (int)Math.floor(37*sfactor);
    public int font38 = (int)Math.floor(38*sfactor);
    public int font39 = (int)Math.floor(39*sfactor);
    public int font40 = (int)Math.floor(40*sfactor);
    //==========================================================================
    
    
    public Trans_State(){ //main constructor
	targetVSWR = 1.2;
        targetGamma = 0.09090909;
	frequency_ref=3.0E9; // reference frequency
        frequency = 3.0E9; // operating frequency
        f_ratio = frequency / frequency_ref;
        zoom_f = false;
        
        LockCursor = false;
        
        WasVoltage = false;
        WasCurrent = false;
        WasPower = false;
        
        WasSWP = false;
        WasVoltPhasor = false;
        WasCurPhasor = false;
        WasZ = false;
        WasY = false;
        WasGamma = false;
        
	epsilon_r=1.0;
	mu_r=1.0;
        wavelength = light_velocity/(Math.sqrt(epsilon_r*mu_r)*frequency_ref);
        wavelength_new = wavelength;
        Transformer_meters = wavelength * 0.25;
        ShuntPlace = 0;
        
        // Characteristic impedances of the 10 Line Sections
        ZIMP = new double[10];
        
        ZIMP[0]=50.0;
        ZIMP[1]=100.0;
	ZIMP[2]=50.0;
        ZIMP[3]=150.0;
        ZIMP[4]=150.0;
        ZIMP[5]=150.0;
	ZIMP[6]=150.0;
        ZIMP[7]=150.0;
        ZIMP[8]=150.0;
        ZIMP[9]=150.0;
        
        // permittivities of the 10 Line Sections
        eps_r = new double[10];
        
        eps_r[0]=1.0;
        eps_r[1]=1.0;
	eps_r[2]=1.0;
        eps_r[3]=1.0;
        eps_r[4]=1.0;
        eps_r[5]=1.0;
	eps_r[6]=1.0;
        eps_r[7]=1.0;
        eps_r[8]=1.0;
        eps_r[9]=1.0;
        
        lambda = new double[10];
        lambda_ref = new double[10]; // reference wavelengths (at the reference frequency)
        
        lambda[0]=wavelength * f_ratio/ Math.sqrt(eps_r[0]);
        lambda[1]=wavelength * f_ratio / Math.sqrt(eps_r[1]);
        lambda[2]=wavelength * f_ratio / Math.sqrt(eps_r[2]);
        lambda[3]=wavelength * f_ratio/ Math.sqrt(eps_r[3]);
        lambda[4]=wavelength * f_ratio / Math.sqrt(eps_r[4]);
        lambda[5]=wavelength * f_ratio / Math.sqrt(eps_r[5]);
        lambda[6]=wavelength * f_ratio / Math.sqrt(eps_r[6]);
        lambda[7]=wavelength * f_ratio / Math.sqrt(eps_r[7]);
        lambda[8]=wavelength * f_ratio / Math.sqrt(eps_r[8]);
        lambda[9]=wavelength * f_ratio / Math.sqrt(eps_r[9]);
        
        lambda_ref[0]=wavelength / Math.sqrt(eps_r[0]);
        lambda_ref[1]=wavelength / Math.sqrt(eps_r[1]);
        lambda_ref[2]=wavelength / Math.sqrt(eps_r[2]);
        lambda_ref[3]=wavelength / Math.sqrt(eps_r[3]);
        lambda_ref[4]=wavelength / Math.sqrt(eps_r[4]);
        lambda_ref[5]=wavelength / Math.sqrt(eps_r[5]);
        lambda_ref[6]=wavelength / Math.sqrt(eps_r[6]);
        lambda_ref[7]=wavelength / Math.sqrt(eps_r[7]);
        lambda_ref[8]=wavelength / Math.sqrt(eps_r[8]);
        lambda_ref[9]=wavelength / Math.sqrt(eps_r[9]);
        
        
        // Length in wavelength of the 10 Line Sections at the reference frequency
        Section_length = new double[10];
        Section_length_ref = new double[10];
        Section_length_meters = new double[10];
        
        Section_length[0] = 0.125 * f_ratio;
        Section_length[1] = 0.25 * f_ratio;
        Section_length[2] = 1.1250 * f_ratio;
        Section_length[3] = 0.0 * f_ratio;
        Section_length[4] = 0.0 * f_ratio;
        Section_length[5] = 0.0 * f_ratio;
        Section_length[6] = 0.0 * f_ratio;
        Section_length[7] = 0.0 * f_ratio;
        Section_length[8] = 0.0 * f_ratio;
        Section_length[9] = 0.0 * f_ratio;
        
        Section_length_ref[0] = 0.125;
        Section_length_ref[1] = 0.25;
        Section_length_ref[2] = 1.1250;
        Section_length_ref[3] = 0.0;
        Section_length_ref[4] = 0.0;
        Section_length_ref[5] = 0.0;
        Section_length_ref[6] = 0.0;
        Section_length_ref[7] = 0.0;
        Section_length_ref[8] = 0.0;
        Section_length_ref[9] = 0.0;
        
        Section_length_meters[0] = Section_length_ref[0] * wavelength / Math.sqrt(eps_r[0]);
        Section_length_meters[1] = Section_length_ref[1] * wavelength / Math.sqrt(eps_r[1]);
        Section_length_meters[2] = Section_length_ref[2] * wavelength / Math.sqrt(eps_r[2]);
        Section_length_meters[3] = Section_length_ref[3] * wavelength / Math.sqrt(eps_r[3]);
        Section_length_meters[4] = Section_length_ref[4] * wavelength / Math.sqrt(eps_r[4]);
        Section_length_meters[5] = Section_length_ref[5] * wavelength / Math.sqrt(eps_r[5]);
        Section_length_meters[6] = Section_length_ref[6] * wavelength / Math.sqrt(eps_r[6]);
        Section_length_meters[7] = Section_length_ref[7] * wavelength / Math.sqrt(eps_r[7]);
        Section_length_meters[8] = Section_length_ref[8] * wavelength / Math.sqrt(eps_r[8]);
        Section_length_meters[9] = Section_length_ref[9] * wavelength / Math.sqrt(eps_r[9]);
        
        
        locations = new double[10];
        locations_ref = new double[10]; // at the central frequency - reference
        locations_meters = new double[10];
        
        lineLength_meters = Section_length_meters[0];
        
        // in the beginning, locations_ref same as locations (same frequency)
        locations[0] = Section_length[0];
        locations_ref[0] = locations[0];
        locations_meters[0] = Section_length_meters[0];
        for(int i = 1; i < 10; i++){
            locations[i] = locations[i-1] + Section_length[i];
            locations_ref[i] = locations[i];
            locations_meters[i] = locations_meters[i-1] + Section_length_meters[i];
            lineLength_meters = lineLength_meters + Section_length_meters[i];
        }
         
        lineLength = locations[9];
        
        //location1 = 0.25*lineLength;
        //location2 = 0.5*lineLength;
        //location3 = 0.75*lineLength;
        
        PlotTimeScale = 2;
        plotFlag = 0;
        
	lineLength_part1 = 1.5;
	lineLength_part2 = 0.0;     
        lineLength = lineLength_part1 + lineLength_part2;
        xpos = lineLength;
        //System.out.println("L = "+lineLength);
        
	lineZ0 = ZIMP[0];
	ZL = new Complex(100.0,0.0);
	YL = new Complex(0.01,0.0);
        ZL_ref = ZL;
        YL_ref = YL;
        
        ZS = new Complex(100.0,100.0);
        YS = new Complex(0.01,-0.01);
        ZS_ref = ZS;
        YS_ref = YS;
        
        ZBoundHigh = 100.0;
        ZBoundLow = 25.0;
        
	generator = new Generator();
        
        ZGref = generator.getZg();
        //System.out.println(ZGref);
        
        stub = new Stub[10];
	//public Stub(double length, double position, double Zchar, boolean isParallel, boolean isOpen, boolean isEnable)
	stub[0] = new Stub(0.125,0.0,ZIMP[0],true,false,false);
	stub[1] = new Stub(0.25,0.0,ZIMP[1],true,false,false);
	stub[2] = new Stub(1.1250,0.0,ZIMP[2],true,false,false);
	stub[3] = new Stub(0.0,0.0,ZIMP[3],true,false,false);
	stub[4] = new Stub(0.0,0.0,ZIMP[4],true,false,false);
	stub[5] = new Stub(0.0,0.0,ZIMP[5],true,false,false);
	stub[6] = new Stub(0.0,0.0,ZIMP[6],true,false,false);
	stub[7] = new Stub(0.0,0.0,ZIMP[7],true,false,false);
	stub[8] = new Stub(0.0,0.0,ZIMP[8],true,false,false);
	stub[9] = new Stub(0.0,0.0,ZIMP[9],true,false,false);
        
	wavelength = light_velocity/(Math.sqrt(epsilon_r*mu_r)*frequency);
	 
        IsLoadRegular = true;
        IsLoadShort = false;
        IsLoadOpen = false;
        IsLoadImaginary = false;
        
        IsIncident = false;
        IsReflected = false;
        IsTotal =true;
        IsTcpVisible = true;
	IwantTraceOn = true;
        TraceWasOn = true;
        
	Pw = new double[3];
	is_Load_Ztype = true;
        is_Shunt_Ztype = true;
	
	//Zin = EMF.computeZinAt(ZL, lineZ0, 0.0, false);
	//Yin = EMF.computeYinAt(YL, lineZ0, 0.0, false);
	
        Zin = EMF.computeZinAt(ZL, ZIMP[0], 0.0, false);
	Yin = EMF.computeYinAt(YL, ZIMP[0], 0.0, false);
	
        //GammaL = EMF.computeGamma(ZL, lineZ0);
	GammaL = EMF.computeGamma(ZL, ZIMP[0]);
	
        Gammain = EMF.computeGammaAt(GammaL, 0.0);
	
        //VPlus = EMF.computeVPlus(generator,ZL,lineZ0,lineLength);
	//Vin = EMF.computeVat(ZL,lineZ0,VPlus,xpos);
	//Iin = EMF.computeIat(ZL,lineZ0,VPlus,xpos);
	VPlus = EMF.computeVPlus(generator,ZL,ZIMP[0],lineLength);
	Vin = EMF.computeVat(ZL,ZIMP[0],VPlus,xpos);
	Iin = EMF.computeIat(ZL,ZIMP[0],VPlus,xpos);
        
        VSWR = EMF.computeSWR(GammaL);
        VSWRin = EMF.computeSWR(Gammain);
        //VSWRin = (1.0+Complex.Magnitude(Gammain))/(1-Complex.Magnitude(Gammain));
        
	//Pw = EMF.PowerDelivered(generator,VPlus,ZL,0.0,lineZ0,lineLength);
	Pw = EMF.PowerDelivered(generator,VPlus,ZL,0.0,ZIMP[0],lineLength);
	//Plot Parameters Initialization
	Voltage = new Complex[NPoints];
	Current = new Complex[NPoints];
	Impedance = new Complex[NPoints];
	Admittance = new Complex[NPoints];
        
	RefCoef = new Complex[NPoints];
	Power = new Complex[NPoints];
	x = new double[NPoints];
	y1 = new double[NPoints];
	y2 = new double[NPoints];
	
        // Voltage envelope for time-dependent plot
        yV1 = new double[NPoints];
        yV2 = new double[NPoints];
	
	NTime=360;
	ctime=0;
	dtime=10;
	timeFactor = new Complex(Math.cos(2.0*Math.PI*ctime/NTime),
				 Math.sin(2.0*Math.PI*ctime/NTime));
	iarray = new int[10];
	VPP = new Complex[10];
                
	this_month = Greg.get(Calendar.MONTH);
	//System.out.println("  This is the month = "+this_month);
	today_week = Greg.get(Calendar.DAY_OF_WEEK);
	//System.out.println("  This is the day_week = "+today_week);
	this_year = Greg.get(Calendar.YEAR);
	this_hour = Greg.get(Calendar.HOUR_OF_DAY);
	//System.out.println("  This is the year = "+this_year);
	this_minute = Greg.get(Calendar.MINUTE);
	//System.out.println("  This is the minute = "+this_minute);
	today_month = Greg.get(Calendar.DAY_OF_MONTH);
	//System.out.println("  This is the day_month = "+today_month);
	today_year = Greg.get(Calendar.DAY_OF_YEAR);
	//System.out.println("  This is the day_year = "+today_year);
	this_zone = Greg.get(Calendar.ZONE_OFFSET);
	//System.out.println("  This is the zone_offset = "+this_zone/3600000);
	saving_time = Greg.get(Calendar.DST_OFFSET);
	//System.out.println("  This is the dst_offset = "+saving_time/3600000);
	
	ignition();
    }
    
public void refresh_size(){
    if(sfactor < 1.3){
        ss2 = (int)Math.floor(2*sfactor);
    }
    else{
        ss2 = (int)Math.ceil(2*sfactor);
    }
    //----------------------------------------------------------------------
    s1 = (int)Math.ceil(1*sfactor);
    s2 = (int)Math.ceil(2*sfactor);
    s3 = (int)Math.ceil(3*sfactor);
    s4 = (int)Math.ceil(4*sfactor);
    s5 = (int)Math.ceil(5*sfactor);
    s6 = (int)Math.ceil(6*sfactor);
    s7 = (int)Math.ceil(7*sfactor);
    s8 = (int)Math.ceil(8*sfactor);
    s9 = (int)Math.ceil(9*sfactor);
    s10 = (int)Math.ceil(10*sfactor);
    s11 = (int)Math.ceil(11*sfactor);
    s12 = (int)Math.ceil(12*sfactor);
    s13 = (int)Math.ceil(13*sfactor);
    s14 = (int)Math.ceil(14*sfactor);
    s15 = (int)Math.ceil(15*sfactor);
    s16 = (int)Math.ceil(16*sfactor);
    s17 = (int)Math.ceil(17*sfactor);
    s18 = (int)Math.ceil(18*sfactor);
    s19 = (int)Math.ceil(19*sfactor);
    s20 = (int)Math.ceil(20*sfactor);
    s21 = (int)Math.ceil(21*sfactor);
    s22 = (int)Math.ceil(22*sfactor);
    s23 = (int)Math.ceil(23*sfactor);
    s24 = (int)Math.ceil(24*sfactor);
    s25 = (int)Math.ceil(25*sfactor);
    s26 = (int)Math.ceil(26*sfactor);
    s27 = (int)Math.ceil(27*sfactor);
    s28 = (int)Math.ceil(28*sfactor);
    s29 = (int)Math.ceil(29*sfactor);
    s30 = (int)Math.ceil(30*sfactor);
    s31 = (int)Math.ceil(31*sfactor);
    s32 = (int)Math.ceil(32*sfactor);
    s33 = (int)Math.ceil(33*sfactor);
    s34 = (int)Math.ceil(34*sfactor);
    s35 = (int)Math.ceil(35*sfactor);
    s36 = (int)Math.ceil(36*sfactor);
    s37 = (int)Math.ceil(37*sfactor);
    s38 = (int)Math.ceil(38*sfactor);
    s39 = (int)Math.ceil(39*sfactor);
    s40 = (int)Math.ceil(40*sfactor);
    s41 = (int)Math.ceil(41*sfactor);
    s42 = (int)Math.ceil(42*sfactor);
    s43 = (int)Math.ceil(43*sfactor);
    s44 = (int)Math.ceil(44*sfactor);
    s45 = (int)Math.ceil(45*sfactor);
    s46 = (int)Math.ceil(46*sfactor);
    s47 = (int)Math.ceil(47*sfactor);
    s48 = (int)Math.ceil(48*sfactor);
    s49 = (int)Math.ceil(49*sfactor);
    s50 = (int)Math.ceil(50*sfactor);
    s51 = (int)Math.ceil(51*sfactor);
    s52 = (int)Math.ceil(52*sfactor);
    s53 = (int)Math.ceil(53*sfactor);
    s54 = (int)Math.ceil(54*sfactor);
    s55 = (int)Math.ceil(55*sfactor);
    s56 = (int)Math.ceil(56*sfactor);
    s57 = (int)Math.ceil(57*sfactor);
    s58 = (int)Math.ceil(58*sfactor);
    s59 = (int)Math.ceil(59*sfactor);
    s60 = (int)Math.ceil(60*sfactor);
    s61 = (int)Math.ceil(61*sfactor);
    s62 = (int)Math.ceil(62*sfactor);
    s63 = (int)Math.ceil(63*sfactor);
    s64 = (int)Math.ceil(64*sfactor);
    s65 = (int)Math.ceil(65*sfactor);
    s66 = (int)Math.ceil(66*sfactor);
    s67 = (int)Math.ceil(67*sfactor);
    s68 = (int)Math.ceil(68*sfactor);
    s69 = (int)Math.ceil(69*sfactor);
    s70 = (int)Math.ceil(70*sfactor);
    s71 = (int)Math.ceil(71*sfactor);
    s72 = (int)Math.ceil(72*sfactor);
    s73 = (int)Math.ceil(73*sfactor);
    s74 = (int)Math.ceil(74*sfactor);
    s75 = (int)Math.ceil(75*sfactor);
    s76 = (int)Math.ceil(76*sfactor);
    s77 = (int)Math.ceil(77*sfactor);
    s78 = (int)Math.ceil(78*sfactor);
    s79 = (int)Math.ceil(79*sfactor);
    s80 = (int)Math.ceil(80*sfactor);
    s81 = (int)Math.ceil(81*sfactor);
    s82 = (int)Math.ceil(82*sfactor);
    s83 = (int)Math.ceil(83*sfactor);
    s84 = (int)Math.ceil(84*sfactor);
    s85 = (int)Math.ceil(85*sfactor);
    s86 = (int)Math.ceil(86*sfactor);
    s87 = (int)Math.ceil(87*sfactor);
    s88 = (int)Math.ceil(88*sfactor);
    s89 = (int)Math.ceil(89*sfactor);
    s90 = (int)Math.ceil(90*sfactor);
    s91 = (int)Math.ceil(91*sfactor);
    s92 = (int)Math.ceil(92*sfactor);
    s93 = (int)Math.ceil(93*sfactor);
    s94 = (int)Math.ceil(94*sfactor);
    s95 = (int)Math.ceil(95*sfactor);
    s96 = (int)Math.ceil(96*sfactor);
    s97 = (int)Math.ceil(97*sfactor);
    s98 = (int)Math.ceil(98*sfactor);
    s99 = (int)Math.ceil(99*sfactor);
    s100 = (int)Math.ceil(100*sfactor);
    s101 = (int)Math.ceil(101*sfactor);
    s102 = (int)Math.ceil(102*sfactor);
    s103 = (int)Math.ceil(103*sfactor);
    s104 = (int)Math.ceil(104*sfactor);
    s105 = (int)Math.ceil(105*sfactor);
    s106 = (int)Math.ceil(106*sfactor);
    s107 = (int)Math.ceil(107*sfactor);
    s108 = (int)Math.ceil(108*sfactor);
    s109 = (int)Math.ceil(109*sfactor);
    s110 = (int)Math.ceil(110*sfactor);
    s111 = (int)Math.ceil(111*sfactor);
    s112 = (int)Math.ceil(112*sfactor);
    s113 = (int)Math.ceil(113*sfactor);
    s114 = (int)Math.ceil(114*sfactor);
    s115 = (int)Math.ceil(115*sfactor);
    s116 = (int)Math.ceil(116*sfactor);
    s117 = (int)Math.ceil(117*sfactor);
    s118 = (int)Math.ceil(118*sfactor);
    s119 = (int)Math.ceil(119*sfactor);
    s120 = (int)Math.ceil(120*sfactor);
    s121 = (int)Math.ceil(121*sfactor);
    s122 = (int)Math.ceil(122*sfactor);
    s123 = (int)Math.ceil(123*sfactor);
    s124 = (int)Math.ceil(124*sfactor);
    s125 = (int)Math.ceil(125*sfactor);
    s126 = (int)Math.ceil(126*sfactor);
    s127 = (int)Math.ceil(127*sfactor);
    s128 = (int)Math.ceil(128*sfactor);
    s129 = (int)Math.ceil(129*sfactor);
    s130 = (int)Math.ceil(130*sfactor);
    s131 = (int)Math.ceil(131*sfactor);
    s132 = (int)Math.ceil(132*sfactor);
    s133 = (int)Math.ceil(133*sfactor);
    s134 = (int)Math.ceil(134*sfactor);
    s135 = (int)Math.ceil(135*sfactor);
    s136 = (int)Math.ceil(136*sfactor);
    s137 = (int)Math.ceil(137*sfactor);
    s138 = (int)Math.ceil(138*sfactor);
    s139 = (int)Math.ceil(139*sfactor);
    s140 = (int)Math.ceil(140*sfactor);
    s141 = (int)Math.ceil(141*sfactor);
    s142 = (int)Math.ceil(142*sfactor);
    s143 = (int)Math.ceil(143*sfactor);
    s144 = (int)Math.ceil(144*sfactor);
    s145 = (int)Math.ceil(145*sfactor);
    s146 = (int)Math.ceil(146*sfactor);
    s147 = (int)Math.ceil(147*sfactor);
    s148 = (int)Math.ceil(148*sfactor);
    s149 = (int)Math.ceil(149*sfactor);
    s150 = (int)Math.ceil(150*sfactor);
    s151 = (int)Math.ceil(151*sfactor);
    s152 = (int)Math.ceil(152*sfactor);
    s153 = (int)Math.ceil(153*sfactor);
    s154 = (int)Math.ceil(154*sfactor);
    s155 = (int)Math.ceil(155*sfactor);
    s156 = (int)Math.ceil(156*sfactor);
    s157 = (int)Math.ceil(157*sfactor);
    s158 = (int)Math.ceil(158*sfactor);
    s159 = (int)Math.ceil(159*sfactor);
    s160 = (int)Math.ceil(160*sfactor);
    s161 = (int)Math.ceil(161*sfactor);
    s162 = (int)Math.ceil(162*sfactor);
    s163 = (int)Math.ceil(163*sfactor);
    s164 = (int)Math.ceil(164*sfactor);
    s165 = (int)Math.ceil(165*sfactor);
    s166 = (int)Math.ceil(166*sfactor);
    s167 = (int)Math.ceil(167*sfactor);
    s168 = (int)Math.ceil(168*sfactor);
    s169 = (int)Math.ceil(169*sfactor);
    s170 = (int)Math.ceil(170*sfactor);
    s171 = (int)Math.ceil(171*sfactor);
    s172 = (int)Math.ceil(172*sfactor);
    s173 = (int)Math.ceil(173*sfactor);
    s174 = (int)Math.ceil(174*sfactor);
    s175 = (int)Math.ceil(175*sfactor);
    s176 = (int)Math.ceil(176*sfactor);
    s177 = (int)Math.ceil(177*sfactor);
    s178 = (int)Math.ceil(178*sfactor);
    s179 = (int)Math.ceil(179*sfactor);
    s180 = (int)Math.ceil(180*sfactor);
    s181 = (int)Math.ceil(181*sfactor);
    s182 = (int)Math.ceil(182*sfactor);
    s183 = (int)Math.ceil(183*sfactor);
    s184 = (int)Math.ceil(184*sfactor);
    s185 = (int)Math.ceil(185*sfactor);
    s186 = (int)Math.ceil(186*sfactor);
    s187 = (int)Math.ceil(187*sfactor);
    s188 = (int)Math.ceil(188*sfactor);
    s189 = (int)Math.ceil(189*sfactor);
    s190 = (int)Math.ceil(190*sfactor);
    s191 = (int)Math.ceil(191*sfactor);
    s192 = (int)Math.ceil(192*sfactor);
    s193 = (int)Math.ceil(193*sfactor);
    s194 = (int)Math.ceil(194*sfactor);
    s195 = (int)Math.ceil(195*sfactor);
    s196 = (int)Math.ceil(196*sfactor);
    s197 = (int)Math.ceil(197*sfactor);
    s198 = (int)Math.ceil(198*sfactor);
    s199 = (int)Math.ceil(199*sfactor);
    s200 = (int)Math.ceil(200*sfactor);
    s250 = (int)Math.ceil(250*sfactor);
    s300 = (int)Math.ceil(300*sfactor);
    s350 = (int)Math.ceil(350*sfactor);
    s400 = (int)Math.ceil(400*sfactor);
    s450 = (int)Math.ceil(450*sfactor);
    s500 = (int)Math.ceil(500*sfactor);
    s550 = (int)Math.ceil(550*sfactor);
    s600 = (int)Math.ceil(600*sfactor);
    s700 = (int)Math.ceil(700*sfactor);
    s800 = (int)Math.ceil(800*sfactor);
    s900 = (int)Math.ceil(900*sfactor);
    s1000 = (int)Math.ceil(1000*sfactor);
    s100000 = (int)Math.ceil(100000*sfactor);
    //----------------------------------------------------------------------
    font8 = (int)Math.floor(8*sfactor);
    font9 = (int)Math.floor(9*sfactor);
    font10 = (int)Math.floor(10*sfactor);
    font11 = (int)Math.floor(11*sfactor);
    font12 = (int)Math.floor(12*sfactor);
    font13 = (int)Math.floor(13*sfactor);
    font14 = (int)Math.floor(14*sfactor);
    font15 = (int)Math.floor(15*sfactor);
    font16 = (int)Math.floor(16*sfactor);
    font17 = (int)Math.floor(17*sfactor);
    font18 = (int)Math.floor(18*sfactor);
    font19 = (int)Math.floor(19*sfactor);
    font20 = (int)Math.floor(20*sfactor);
    font21 = (int)Math.floor(21*sfactor);
    font22 = (int)Math.floor(22*sfactor);
    font23 = (int)Math.floor(23*sfactor);
    font24 = (int)Math.floor(24*sfactor);
    font25 = (int)Math.floor(25*sfactor);
    font26 = (int)Math.floor(26*sfactor);
    font27 = (int)Math.floor(27*sfactor);
    font28 = (int)Math.floor(28*sfactor);
    font29 = (int)Math.floor(29*sfactor);
    font30 = (int)Math.floor(30*sfactor);
    font31 = (int)Math.floor(31*sfactor);
    font32 = (int)Math.floor(32*sfactor);
    font33 = (int)Math.floor(33*sfactor);
    font34 = (int)Math.floor(34*sfactor);
    font35 = (int)Math.floor(35*sfactor);
    font36 = (int)Math.floor(36*sfactor);
    font37 = (int)Math.floor(37*sfactor);
    font38 = (int)Math.floor(38*sfactor);
    font39 = (int)Math.floor(39*sfactor);
    font40 = (int)Math.floor(40*sfactor);
}
    
    public synchronized void ignition(){
        String lcOSName = System.getProperty("os.name").toLowerCase();
        boolean MAC_OS_X = lcOSName.startsWith("mac os x");
        boolean WINDOWS = lcOSName.startsWith("windows");
        if(WINDOWS){
            IsWindows = true;
            IsMac = false;
        }
        else{
            IsWindows = false;
        }
        if(MAC_OS_X){
            IsMac = true;
            IsWindows = false;
        }
        else{
            IsMac = false;
        }
        //System.out.println(lcOSName);
        
        // Lines other than transformer have same characteristics
        double Ztemp1, Ztemp2;
        //System.out.println("VSWR target = "+targetVSWR);
        ZIMP[2] = ZIMP[0];
        eps_r[2] = eps_r[0];
        // CHANGE - IMPOSE SAME epsilon IN ALL LINES
        eps_r[1] = eps_r[0];
        
        targetGamma = (targetVSWR -1)/(targetVSWR + 1);
        
        f_ratio = frequency / frequency_ref;
	wavelength = light_velocity/(Math.sqrt(epsilon_r*mu_r)*frequency_ref); //at the refernce frequency
	wavelength_new = wavelength / f_ratio; 
        
        lambda[0]=wavelength_new / Math.sqrt(eps_r[0]);
        lambda[1]=wavelength_new / Math.sqrt(eps_r[1]);
        lambda[2]=wavelength_new / Math.sqrt(eps_r[2]);
        lambda[3]=wavelength_new / Math.sqrt(eps_r[3]);
        lambda[4]=wavelength_new / Math.sqrt(eps_r[4]);
        lambda[5]=wavelength_new / Math.sqrt(eps_r[5]);
        lambda[6]=wavelength_new / Math.sqrt(eps_r[6]);
        lambda[7]=wavelength_new / Math.sqrt(eps_r[7]);
        lambda[8]=wavelength_new / Math.sqrt(eps_r[8]);
        lambda[9]=wavelength_new / Math.sqrt(eps_r[9]);
        
        lambda_ref[0]=wavelength / Math.sqrt(eps_r[0]);
        lambda_ref[1]=wavelength / Math.sqrt(eps_r[1]);
        lambda_ref[2]=wavelength / Math.sqrt(eps_r[2]);
        lambda_ref[3]=wavelength / Math.sqrt(eps_r[3]);
        lambda_ref[4]=wavelength / Math.sqrt(eps_r[4]);
        lambda_ref[5]=wavelength / Math.sqrt(eps_r[5]);
        lambda_ref[6]=wavelength / Math.sqrt(eps_r[6]);
        lambda_ref[7]=wavelength / Math.sqrt(eps_r[7]);
        lambda_ref[8]=wavelength / Math.sqrt(eps_r[8]);
        lambda_ref[9]=wavelength / Math.sqrt(eps_r[9]);
        
        Section_length_ref[2] = 1.25 - Section_length_ref[0];
        Transformer_meters = lambda[1] * 0.25;
        
        Section_length[0] = Section_length_ref[0] * f_ratio;
        Section_length[1] = Section_length_ref[1] * f_ratio;
        Section_length[2] = Section_length_ref[2] * f_ratio;
        Section_length[3] = Section_length_ref[3] * f_ratio;
        Section_length[4] = Section_length_ref[4] * f_ratio;
        Section_length[5] = Section_length_ref[5] * f_ratio;
        Section_length[6] = Section_length_ref[6] * f_ratio;
        Section_length[7] = Section_length_ref[7] * f_ratio;
        Section_length[8] = Section_length_ref[8] * f_ratio;
        Section_length[9] = Section_length_ref[9] * f_ratio;
        
        Section_length_meters[0] = Section_length_ref[0] * lambda_ref[0];
        Section_length_meters[1] = Section_length_ref[1] * lambda_ref[1];
        Section_length_meters[2] = Section_length_ref[2] * lambda_ref[2];
        Section_length_meters[3] = Section_length_ref[3] * lambda_ref[3];
        Section_length_meters[4] = Section_length_ref[4] * lambda_ref[4];
        Section_length_meters[5] = Section_length_ref[5] * lambda_ref[5];
        Section_length_meters[6] = Section_length_ref[6] * lambda_ref[6];
        Section_length_meters[7] = Section_length_ref[7] * lambda_ref[7]; 
        Section_length_meters[8] = Section_length_ref[8] * lambda_ref[8];
        Section_length_meters[9] = Section_length_ref[9] * lambda_ref[9];
        
        locations[0] = Section_length[0];
        locations_ref[0] = Section_length_ref[0];
        locations_meters[0] = Section_length_meters[0];
        //lineLength_meters = 0.0;
        
        for(int i = 1; i < 10; i++){
            locations[i] = locations[i-1] + Section_length[i];
            locations_ref[i] = locations_ref[i-1] + Section_length_ref[i];
            locations_meters[i] = locations_meters[i-1] + Section_length_meters[i];
        }
         
        lineLength = locations[9];
        
        lineLength_meters = 0.0;
        for(int i = 0; i < 10; i++){
            lineLength_meters = lineLength_meters + Section_length_meters[i];
        }
        
        if(LockCursor){
            xpos = locations[1];
        }
        
        if(xpos <= locations[0] ){
            xpos_meters = xpos * lambda[0];
        }
        else if(xpos > locations[0] && xpos <= locations[1] ){
            xpos_meters = locations_meters[0] + 
                         (xpos - locations[0]) * lambda[1];
        }
        else if(xpos > locations[1] && xpos <= locations[2] ){
            xpos_meters = locations_meters[1] + 
                         (xpos - locations[1]) * lambda[2];
        }
        else if(xpos > locations[2] && xpos <= locations[3] ){
            xpos_meters = locations_meters[2] + 
                         (xpos - locations[2]) * lambda[3];
        }
        else if(xpos > locations[3] && xpos <= locations[4] ){
            xpos_meters = locations_meters[3] + 
                         (xpos - locations[3]) * lambda[4];
        }
        else if(xpos > locations[4] && xpos <= locations[5] ){
            xpos_meters = locations_meters[4] + 
                         (xpos - locations[4]) * lambda[5];
        }
        else if(xpos > locations[5] && xpos <= locations[6] ){
            xpos_meters = locations_meters[5] + 
                         (xpos - locations[5]) * lambda[6];
        }
        else if(xpos > locations[6] && xpos <= locations[7] ){
            xpos_meters = locations_meters[6] + 
                         (xpos - locations[6]) * lambda[7];
        }
        else if(xpos > locations[7] && xpos <= locations[8] ){
            xpos_meters = locations_meters[7] + 
                         (xpos - locations[7]) * lambda[8];
        }
        else if(xpos > locations[8] && xpos <= locations[9] ){
            xpos_meters = locations_meters[8] + 
                         (xpos - locations[8]) * lambda[9];
        }
        
        Ztemp1 = ZIMP[0] * (1.0 + Complex.Magnitude(GammaL))/(1.0 - Complex.Magnitude(GammaL));
        Ztemp2 = ZIMP[0] * (1.0 - Complex.Magnitude(GammaL))/(1.0 + Complex.Magnitude(GammaL));
        
        ZBoundHigh = Math.max(Ztemp1, Ztemp2);
        ZBoundLow = Math.min(Ztemp1, Ztemp2);
        
        //System.out.println("ZHIGH = "+ZBoundHigh+"   ZLOW = "+ZBoundLow);
        // Load - imaginary part for frequency different from reference 
        double rea_ref = 0.0;
        double img_ref = 0.0;
        double rea = 0.0;
        double img = 0.0;
        if(is_Load_Ztype){
            rea_ref = Complex.Real(ZL_ref);
            img_ref = Complex.Imaginary(ZL_ref);

            if(frequency != frequency_ref){
                rea = rea_ref;
                if(img_ref == 0.0){
                    img = 0.0;
                }
                else if(img_ref > 0.0){
                    img = img_ref * f_ratio;
                }
                else{
                    img = img_ref / f_ratio;
                }
                ZL = new Complex(rea,img);
            }
            else{
                ZL = ZL_ref;
            }
        }
        else{
            rea_ref = Complex. Real(YL_ref);
            img_ref = Complex.Imaginary(YL_ref);

            if(frequency != frequency_ref){
                rea = rea_ref;
                if(img_ref == 0.0){
                    img = 0.0;
                }
                else if(img_ref > 0.0){
                    img = img_ref * f_ratio;
                }
                else{
                    img = img_ref / f_ratio;
                }
                YL = new Complex(rea,img);
            }
            else{ YL = YL_ref;}
        }

        
        // SHUNT ELEMENT - set for frequency change
        double reaS_ref = 0.0;
        double imgS_ref = 0.0;
        double reaS = 0.0;
        double imgS = 0.0;
        if(is_Load_Ztype){
            reaS_ref = Complex.Real(ZS_ref);
            imgS_ref = Complex.Imaginary(ZS_ref);

            if(frequency != frequency_ref){
                reaS = reaS_ref;
                if(imgS_ref == 0.0){
                    imgS = 0.0;
                }
                else if(imgS_ref > 0.0){
                    imgS = imgS_ref * f_ratio;
                }
                else{
                    imgS = imgS_ref / f_ratio;
                }
                ZS = new Complex(reaS,imgS);
            }
            else{
                ZS = ZS_ref;
            }
        }
        else{
            reaS_ref = Complex. Real(YS_ref);
            imgS_ref = Complex.Imaginary(YS_ref);

            if(frequency != frequency_ref){
                reaS = reaS_ref;
                if(imgS_ref == 0.0){
                    imgS = 0.0;
                }
                else if(imgS_ref > 0.0){
                    imgS = imgS_ref * f_ratio;
                }
                else{
                    imgS = imgS_ref / f_ratio;
                }
                YS = new Complex(reaS,imgS);
            }
            else{ YS = YS_ref;}
        }
        
        //---------------------------------------------
        
         
         if(is_Load_Ztype){
	    
		//GammaL = EMF.computeGamma(ZL,lineZ0,true);
		GammaL = EMF.computeGamma(ZL,ZIMP[0],true);
		
                if(Complex.Real(ZL) ==0.0 && Complex.Imaginary(ZL)!=0.0){
		    YL = new Complex(0.0, - 1.0/Complex.Imaginary(ZL));
		}
		else{
		    //YL =  EMF.computeYinAt(GammaL,lineZ0,0.0,true);
                    YL =  EMF.computeYinAt(GammaL,ZIMP[0],0.0,true);
		}
                
                if(Complex.Real(ZL)==0.0 && Complex.Imaginary(ZL)==0.0){
                    IsLoadShort = true;
                    IsLoadOpen = false;
                    IsLoadImaginary = false;
                    IsLoadRegular = false;
                }
                else if((Complex.Real(ZL)==0.0 && Complex.Imaginary(ZL)<-1.0E130)||Complex.Magnitude(ZL)>1.0E130){
                    IsLoadOpen = true;
                    IsLoadShort = false;
                    IsLoadImaginary = false;
                    IsLoadRegular = false;
                }
                else if(Complex.Real(ZL)==0.0 && Complex.Imaginary(ZL)!=0.0){
                    IsLoadImaginary = true;
                    IsLoadShort = false;
                    IsLoadOpen = false;
                    IsLoadRegular = false;
                }
                else if((Complex.Real(ZL)!=0.0 && Complex.Imaginary(ZL)!=0.0) ||
                    (Complex.Real(ZL)!=0.0 && Complex.Imaginary(ZL)==0.0))
                {
                    IsLoadRegular = true;
                    IsLoadShort = false;
                    IsLoadOpen = false;
                    IsLoadImaginary = false;
                }
	}
	else{
		//GammaL = EMF.computeGamma(YL,lineZ0,false);
		GammaL = EMF.computeGamma(YL,ZIMP[0],false);
		
                if(Complex.Real(YL) ==0.0 && Complex.Imaginary(YL)!=0.0){
		    ZL = new Complex(0.0, - 1.0/Complex.Imaginary(YL));
		}
		else{
		    //ZL = EMF.computeZinAt(GammaL,lineZ0,0.0,true);
                    ZL = EMF.computeZinAt(GammaL,ZIMP[0],0.0,true);
		}
                
                if(Complex.Real(YL)==0.0 && Complex.Imaginary(YL)==0.0){
                    IsLoadShort = false;
                    IsLoadOpen = true;
                    IsLoadImaginary = false;
                    IsLoadRegular = false;
                }
                else if((Complex.Real(YL)==0.0 && Complex.Imaginary(YL)<-1.0E130)||Complex.Magnitude(YL)>1.0E100 ||
                    Complex.Magnitude(ZL)==0.0){
                    IsLoadOpen = false;
                    IsLoadShort = true;
                    IsLoadImaginary = false;
                    IsLoadRegular = false;
                }
                else if(Complex.Real(YL)==0.0 && Complex.Imaginary(YL)!=0.0){
                    IsLoadImaginary = true;
                    IsLoadShort = false;
                    IsLoadOpen = false;
                    IsLoadRegular = false;
                }
                else if((Complex.Real(YL)!=0.0 && Complex.Imaginary(YL)!=0.0) ||
                    (Complex.Real(YL)!=0.0 && Complex.Imaginary(YL)==0.0))
                {
                    IsLoadRegular = true;
                    IsLoadShort = false;
                    IsLoadOpen = false;
                    IsLoadImaginary = false;
                }
	}
            
        
        if(is_Shunt_Ztype){
	    
		if(Complex.Real(ZS) ==0.0 && Complex.Imaginary(ZS)!=0.0){
		    YS = new Complex(0.0, - 1.0/Complex.Imaginary(ZS));
		}
		else if(Complex.Real(ZS) ==0.0 && Complex.Imaginary(ZS)==0.0){
                    YS = new Complex(0.0, - 1.0E130);
                }
                else{
                    YS =  Complex.Divide(one,ZS);
		}
	}
	else{
		if(Complex.Real(YS) ==0.0 && Complex.Imaginary(YS)!=0.0){
		    ZS = new Complex(0.0, - 1.0/Complex.Imaginary(YS));
		}
                else if(Complex.Real(YS) ==0.0 && Complex.Imaginary(YS)==0.0){
                    ZS = new Complex(0.0, - 1.0E130);
                }
		else{
		    ZS = Complex.Divide(one,YS);
		}             
   	}
        
        
        {
            VSWR = EMF.computeSWR(GammaL);
            
            IsTcpVisible = false;   
	    
	    //Y0 is admittance at first interface
	    Y0 = EMF.computeYinAt(YL,ZIMP[0],locations[0],false);
	    if(ShuntPlace == 10){Y0 = Complex.Add(Y0, YS);}
            Gamma0 = EMF.computeGamma(Y0,ZIMP[1],false);
	    
	    //Y1 is admittance at second interface
	    Y1 = EMF.computeYinAt(Y0,ZIMP[1],locations[1]-locations[0],false);
	    if(ShuntPlace == 9){Y1 = Complex.Add(Y1, YS);}
            Gamma1 = EMF.computeGamma(Y1,ZIMP[2],false);
	    
	    //Y2 is admittance at third interface
	    Y2 = EMF.computeYinAt(Y1,ZIMP[2],locations[2]-locations[1],false);
	    //Complex testcomplex = new Complex(100.0,100.0);
            //Y2 = Complex.Add(Y2,Complex.Divide(one,testcomplex));
            if(ShuntPlace == 8){Y2 = Complex.Add(Y2, YS);}
            Gamma2 = EMF.computeGamma(Y2,ZIMP[3],false);
	    
            //Y3 is admittance at fourth interface
	    Y3 = EMF.computeYinAt(Y2,ZIMP[3],locations[3]-locations[2],false);
	    if(ShuntPlace == 7){Y3 = Complex.Add(Y3, YS);}
            Gamma3 = EMF.computeGamma(Y3,ZIMP[4],false);
            
            //Y4 is admittance at fifth interface
	    Y4 = EMF.computeYinAt(Y3,ZIMP[4],locations[4]-locations[3],false);
	    if(ShuntPlace == 6){Y4 = Complex.Add(Y4, YS);}
            Gamma4 = EMF.computeGamma(Y4,ZIMP[5],false);
            
            //Y5 is admittance at sixth interface
	    Y5 = EMF.computeYinAt(Y4,ZIMP[5],locations[5]-locations[4],false);
	    if(ShuntPlace == 5){Y5 = Complex.Add(Y5, YS);}
            Gamma5 = EMF.computeGamma(Y5,ZIMP[6],false);
            
	    //Y6 is admittance at seventh interface
	    Y6 = EMF.computeYinAt(Y5,ZIMP[6],locations[6]-locations[5],false);
	    if(ShuntPlace == 4){Y6 = Complex.Add(Y6, YS);}
            Gamma6 = EMF.computeGamma(Y6,ZIMP[7],false);
            
            //Y7 is admittance at eighth interface
	    Y7 = EMF.computeYinAt(Y6,ZIMP[7],locations[7]-locations[6],false);
	    if(ShuntPlace == 3){Y7 = Complex.Add(Y7, YS);}
            Gamma7 = EMF.computeGamma(Y7,ZIMP[8],false);
            
            //Y8 is admittance at nineth interface
	    Y8 = EMF.computeYinAt(Y7,ZIMP[8],locations[8]-locations[7],false);
	    if(ShuntPlace == 2){Y8 = Complex.Add(Y8, YS);}
            Gamma8 = EMF.computeGamma(Y8,ZIMP[9],false);
            
            //Y9 is admittance at tenth interface (input)
	    Y9 = EMF.computeYinAt(Y8,ZIMP[9],locations[9]-locations[8],false);
	    if(ShuntPlace == 1){Y9 = Complex.Add(Y9, YS);}
            Gamma9 = EMF.computeGamma(Y9,ZIMP[9],false);
            
	    SPos0 = (int)((NPoints-1)*locations[0]/lineLength);
	    SPos1 = (int)((NPoints-1)*locations[1]/lineLength);
	    SPos2 = (int)((NPoints-1)*locations[2]/lineLength);
            SPos3 = (int)((NPoints-1)*locations[3]/lineLength);
	    SPos4 = (int)((NPoints-1)*locations[4]/lineLength);
	    SPos5 = (int)((NPoints-1)*locations[5]/lineLength);
            SPos6 = (int)((NPoints-1)*locations[6]/lineLength);
	    SPos7 = (int)((NPoints-1)*locations[7]/lineLength);
	    SPos8 = (int)((NPoints-1)*locations[8]/lineLength);
            SPos9 = (int)((NPoints-1)*locations[9]/lineLength);
            
            //Find impedance and admittance looking from the input terminals of the transmission line
	    if(ShuntPlace == 1){
                Zinput = EMF.computeZinAt(Gamma9,ZIMP[9],0.0,true);
                Yinput = EMF.computeYinAt(Gamma9,ZIMP[9],0.,true);
            }
            else{    
                Zinput = EMF.computeZinAt(Gamma8,ZIMP[9],lineLength-locations[8],true);
                Yinput = EMF.computeYinAt(Gamma8,ZIMP[9],lineLength-locations[8],true);
            }
            
            //Gammainput = EMF.computeGammaAt(Gamma8,lineLength-locations[8]);
	    /*
            Gammainput = Gammain;
            //System.out.println("Zinput = "+Zinput+"   Gammainput = "+Gammain);
            //--------------------------------------------------------------------
            Complex Zat0, Zat1, Zat2, Zat3;
            Zat0 = ZL;
            Zat1 = EMF.computeZinAt(Gamma1,ZIMP[0],locations[0],true);
            Zat2 = EMF.computeZinAt(Gamma2,ZIMP[1],locations[1],true);
            Zat3 = EMF.computeZinAt(Gamma3,ZIMP[2],locations[2],true);
	    //Find VPlus
	    Complex tempc, VPtest;
	    tempc = new Complex(Math.cos(EMF.beta*(lineLength-locations[2])),
				Math.sin(EMF.beta*(lineLength-locations[2])));
            
            
	    VPP[2] = Complex.Divide(EMF.voltageDivider(generator,Zinput),
				Complex.Multiply(tempc,Complex.Add(1.0,Gammain))
		    );
            
            VPP[1] = Complex.Divide(EMF.voltageDivider(generator,Zinput),
				Complex.Multiply(tempc,Complex.Add(1.0,Gammain))
		    );
            
                    
                    
            //--------------------------------------------------------------------
            VPP[8] = Complex.Divide(
			  EMF.computeVat(Gamma8,ZIMP[9],VPlus,0.0,true),
			  EMF.computeVat(Gamma7,ZIMP[8],one,locations[8]-locations[7],true)
		);
            
            //System.out.println("VPlus = "+VPlus+"   Vin = "+VPtest);
	    //Pw = EMF.PowerDelivered(generator,VPlus,Zinput,0.0,lineZ0,0.0);
	    Pw = EMF.PowerDelivered(generator,VPlus,Zinput,0.0,ZIMP[9],0.0);
	    */
            
            
            //Gammainput = Gamma9;
            Gamma2 = Gammain; Gamma3 = Gammain; Gamma4 = Gammain; Gamma5 = Gammain;
            Gamma6 = Gammain; Gamma7 = Gammain; Gamma8 = Gammain; Gamma9 = Gammain;
            
	    //Find VPlus
	    Complex tempc, tempcc;
	    tempc = new Complex(Math.cos(EMF.beta*(lineLength-locations[8])),
				Math.sin(EMF.beta*(lineLength-locations[8]))
                    );
	    VPlus = Complex.Divide(EMF.voltageDivider(generator,Zinput),
				Complex.Multiply(tempc,
				   Complex.Add(1.0,EMF.computeGammaAt(Gamma8,lineLength-locations[8])
				   )
				)
		    );
            
            Complex VPlusPlus;
            tempcc = new Complex(Math.cos(EMF.beta*(lineLength-locations[1])),
				Math.sin(EMF.beta*(lineLength-locations[1])));
	    VPlusPlus = Complex.Divide(EMF.voltageDivider(generator,Zinput),
				Complex.Multiply(tempcc,
				   Complex.Add(1.0,EMF.computeGammaAt(Gamma1,lineLength-locations[1])
				   )
				)
		    );
	    //Pw = EMF.PowerDelivered(generator,VPlus,Zinput,0.0,lineZ0,0.0);
	    Pw = EMF.PowerDelivered(generator,VPlus,Zinput,0.0,ZIMP[9],0.0);
	    
            //System.out.println(Gammain+"  "+Gamma2+"  "+Gamma1);
            //System.out.println(locations[1]+"   "+lineLength+"    "+EMF.voltageDivider(generator,Zinput)+"   "+VPlusPlus+"  "+Gamma1);
            //System.out.println(Complex.Add(1.0,EMF.computeGammaAt(Gamma1,lineLength-locations[1]))+"   "+tempcc+"  "+Math.cos(EMF.beta*lineLength-locations[1]));
            //System.out.println(Math.cos(EMF.beta*(lineLength-locations[1]))+"   "+EMF.beta);
            
            
            //System.out.println("locationA = "+locations[9]);
                VPP[8] = Complex.Divide(
			  EMF.computeVat(Gamma8,ZIMP[9],VPlus,0.0,true),
			  EMF.computeVat(Gamma7,ZIMP[8],one,locations[8]-locations[7],true)
		);
                
                VPP[7] = Complex.Divide(
			  EMF.computeVat(Gamma7,ZIMP[8],VPP[8],0.0,true),
			  EMF.computeVat(Gamma6,ZIMP[7],one,locations[7]-locations[6],true)
		);
                
                VPP[6] = Complex.Divide(
			  EMF.computeVat(Gamma6,ZIMP[7],VPP[7],0.0,true),
			  EMF.computeVat(Gamma5,ZIMP[6],one,locations[6]-locations[5],true)
		);
                
                VPP[5] = Complex.Divide(
			  EMF.computeVat(Gamma5,ZIMP[6],VPP[6],0.0,true),
			  EMF.computeVat(Gamma4,ZIMP[5],one,locations[5]-locations[4],true)
		);
                
                VPP[4] = Complex.Divide(
			  EMF.computeVat(Gamma4,ZIMP[5],VPP[5],0.0,true),
			  EMF.computeVat(Gamma3,ZIMP[4],one,locations[4]-locations[3],true)
		);
                
                VPP[3] = Complex.Divide(
			  EMF.computeVat(Gamma3,ZIMP[4],VPP[4],0.0,true),
			  EMF.computeVat(Gamma2,ZIMP[3],one,locations[3]-locations[2],true)
		);
                
                VPP[2] = Complex.Divide(
			  EMF.computeVat(Gamma2,ZIMP[3],VPP[3],0.0,true),
			  EMF.computeVat(Gamma1,ZIMP[2],one,locations[2]-locations[1],true)
		);
                
		VPP[1] = Complex.Divide(
			  EMF.computeVat(Gamma1,ZIMP[2],VPP[2],0.0,true),
			  EMF.computeVat(Gamma0,ZIMP[1],one,locations[1]-locations[0],true)
		);
	    
		VPP[0] = Complex.Divide(
			  EMF.computeVat(Gamma0,ZIMP[1],VPP[1],0.0,true),
			  EMF.computeVat(GammaL,ZIMP[0],one,locations[0],true)
		);
                
                VPmax = VPlus;
                for(int i=0 ; i<9; i++){
                    if(Complex.Magnitude(VPP[i]) > Complex.Magnitude(VPmax)){VPmax = VPP[i];}
                }
                
                ZIMPmin = ZIMP[0];
                for(int i=1 ; i<9; i++){
                    if(ZIMP[i]< ZIMPmin){ZIMPmin = ZIMP[i];}
                }
                
                
            //if(xpos <= locations[0]){
            if(xpos < locations[0]){
		if(is_Load_Ztype){
		    Yin = EMF.computeYinAt(GammaL,ZIMP[0],xpos,true);
		    Zin = EMF.Inv(Yin);
		}
		else { 
		    Zin = EMF.computeZinAt(GammaL,ZIMP[0],xpos,true); 
		    Yin = EMF.Inv(Zin);
		}
		Gammain = EMF.computeGammaAt(GammaL,xpos);
		Vin = EMF.computeVat(GammaL,ZIMP[0],VPP[0],xpos,true);
		Iin = EMF.computeIat(GammaL,ZIMP[0],VPP[0],xpos,true);
                lineZ0 = ZIMP[0];
	    }
	    //else if(xpos <= locations[1] && xpos > locations[0]){
            else if(xpos < locations[1] && xpos >= locations[0]){
		if(is_Load_Ztype){
		    Yin = EMF.computeYinAt(Gamma0,ZIMP[1],xpos-locations[0],true);
		    Zin = EMF.Inv(Yin);
		}
		else { 
		    Zin = EMF.computeZinAt(Gamma0,ZIMP[1],xpos-locations[0],true);
		    Yin = EMF.Inv(Zin);
		}
	        Gammain = EMF.computeGammaAt(Gamma0,xpos-locations[0]);
		Vin = EMF.computeVat(Gamma0,ZIMP[1],VPP[1],xpos-locations[0],true);
		Iin = EMF.computeIat(Gamma0,ZIMP[1],VPP[1],xpos-locations[0],true);
                lineZ0 = ZIMP[1];
	    }
	    //else if(xpos <= locations[2] && xpos > locations[1]){
            else if(xpos <= locations[2] && xpos >= locations[1]){
		if(is_Load_Ztype){
		    Yin = EMF.computeYinAt(Gamma1,ZIMP[2],xpos-locations[1],true);
		    Zin = EMF.Inv(Yin);
		}
		else { 
		    Zin = EMF.computeZinAt(Gamma1,ZIMP[2],xpos-locations[1],true);
		    Yin = EMF.Inv(Zin);
		}
		Gammain = EMF.computeGammaAt(Gamma1,xpos-locations[1]);
		Vin = EMF.computeVat(Gamma1,ZIMP[2],VPP[2],xpos-locations[1],true);
		Iin = EMF.computeIat(Gamma1,ZIMP[2],VPP[2],xpos-locations[1],true); 
                lineZ0 = ZIMP[2];
            }
            
            // CONDITIONS BELOW ARE NOT USED - THEREFORE ABOVE xpos <= locations [2] otherwise only <
            //else if(xpos <= locations[3] && xpos > locations[2]){
            else if(xpos < locations[3] && xpos >= locations[2]){
		if(is_Load_Ztype){
		    Yin = EMF.computeYinAt(Gamma2,ZIMP[3],xpos-locations[2],true);
		    Zin = EMF.Inv(Yin);
		}
		else { 
		    Zin = EMF.computeZinAt(Gamma2,ZIMP[3],xpos-locations[2],true);
		    Yin = EMF.Inv(Zin);
		}
		Gammain = EMF.computeGammaAt(Gamma2,xpos-locations[2]);
		Vin = EMF.computeVat(Gamma2,ZIMP[3],VPP[3],xpos-locations[2],true);
		Iin = EMF.computeIat(Gamma2,ZIMP[3],VPP[3],xpos-locations[2],true); 
                lineZ0 = ZIMP[3];
            }
            //else if(xpos <= locations[4] && xpos > locations[3]){
            else if(xpos < locations[4] && xpos >= locations[3]){
		if(is_Load_Ztype){
		    Yin = EMF.computeYinAt(Gamma3,ZIMP[4],xpos-locations[3],true);
		    Zin = EMF.Inv(Yin);
		}
		else { 
		    Zin = EMF.computeZinAt(Gamma3,ZIMP[4],xpos-locations[3],true);
		    Yin = EMF.Inv(Zin);
		}
		Gammain = EMF.computeGammaAt(Gamma3,xpos-locations[3]);
		Vin = EMF.computeVat(Gamma3,ZIMP[4],VPP[4],xpos-locations[3],true);
		Iin = EMF.computeIat(Gamma3,ZIMP[4],VPP[4],xpos-locations[3],true); 
                lineZ0 = ZIMP[4];
            }
            //else if(xpos <= locations[5] && xpos > locations[4]){
            else if(xpos < locations[5] && xpos >= locations[4]){
		if(is_Load_Ztype){
		    Yin = EMF.computeYinAt(Gamma4,ZIMP[5],xpos-locations[4],true);
		    Zin = EMF.Inv(Yin);
		}
		else { 
		    Zin = EMF.computeZinAt(Gamma4,ZIMP[5],xpos-locations[4],true);
		    Yin = EMF.Inv(Zin);
		}
		Gammain = EMF.computeGammaAt(Gamma4,xpos-locations[4]);
		Vin = EMF.computeVat(Gamma4,ZIMP[5],VPP[5],xpos-locations[4],true);
		Iin = EMF.computeIat(Gamma4,ZIMP[5],VPP[5],xpos-locations[4],true); 
                lineZ0 = ZIMP[5];
            }
            //else if(xpos <= locations[6] && xpos > locations[5]){
            else if(xpos < locations[6] && xpos >= locations[5]){
		if(is_Load_Ztype){
		    Yin = EMF.computeYinAt(Gamma5,ZIMP[6],xpos-locations[5],true);
		    Zin = EMF.Inv(Yin);
		}
		else { 
		    Zin = EMF.computeZinAt(Gamma5,ZIMP[6],xpos-locations[5],true);
		    Yin = EMF.Inv(Zin);
		}
		Gammain = EMF.computeGammaAt(Gamma5,xpos-locations[5]);
		Vin = EMF.computeVat(Gamma5,ZIMP[6],VPP[6],xpos-locations[5],true);
		Iin = EMF.computeIat(Gamma5,ZIMP[6],VPP[6],xpos-locations[5],true); 
                lineZ0 = ZIMP[6];
            }
            //else if(xpos <= locations[7] && xpos > locations[6]){
            else if(xpos < locations[7] && xpos >= locations[6]){
		if(is_Load_Ztype){
		    Yin = EMF.computeYinAt(Gamma6,ZIMP[7],xpos-locations[6],true);
		    Zin = EMF.Inv(Yin);
		}
		else { 
		    Zin = EMF.computeZinAt(Gamma6,ZIMP[7],xpos-locations[6],true);
		    Yin = EMF.Inv(Zin);
		}
		Gammain = EMF.computeGammaAt(Gamma6,xpos-locations[6]);
		Vin = EMF.computeVat(Gamma6,ZIMP[7],VPP[7],xpos-locations[6],true);
		Iin = EMF.computeIat(Gamma6,ZIMP[7],VPP[7],xpos-locations[6],true); 
                lineZ0 = ZIMP[7];
            }   
            //else if(xpos <= locations[8] && xpos > locations[7]){
            else if(xpos < locations[8] && xpos >= locations[7]){
		if(is_Load_Ztype){
		    Yin = EMF.computeYinAt(Gamma7,ZIMP[8],xpos-locations[7],true);
		    Zin = EMF.Inv(Yin);
		}
		else { 
		    Zin = EMF.computeZinAt(Gamma7,ZIMP[8],xpos-locations[7],true);
		    Yin = EMF.Inv(Zin);
		}
		Gammain = EMF.computeGammaAt(Gamma7,xpos-locations[7]);
		Vin = EMF.computeVat(Gamma7,ZIMP[8],VPP[8],xpos-locations[7],true);
		Iin = EMF.computeIat(Gamma7,ZIMP[8],VPP[8],xpos-locations[7],true); 
                lineZ0 = ZIMP[8];
            }              
            //else if(xpos <= locations[9] && xpos > locations[8]){
            else if(xpos < locations[9] && xpos >= locations[8]){
		if(is_Load_Ztype){
		    Yin = EMF.computeYinAt(Gamma8,ZIMP[9],xpos-locations[8],true);
		    Zin = EMF.Inv(Yin);
		}
		else { 
		    Zin = EMF.computeZinAt(Gamma8,ZIMP[9],xpos-locations[8],true);
		    Yin = EMF.Inv(Zin);
		}
		Gammain = EMF.computeGammaAt(Gamma8,xpos-locations[8]);
		Vin = EMF.computeVat(Gamma8,ZIMP[9],VPlus,xpos-locations[8],true);
		Iin = EMF.computeIat(Gamma8,ZIMP[9],VPlus,xpos-locations[8],true); 
                lineZ0 = ZIMP[9];
            }    
            
            VSWRin = EMF.computeSWR(Gammain);
            //VSWRin = (1.0+Complex.Magnitude(Gammain))/(1-Complex.Magnitude(Gammain));
            /*    
            else {
		if(is_Load_Ztype){
		    Yin = EMF.computeYinAt(Gamma2,ZIMP[3],xpos-location3,true);
		    Zin = EMF.Inv(Yin);
		}
		else { 
		    Zin = EMF.computeZinAt(Gamma2,ZIMP[3],xpos-location3,true);
		    Yin = EMF.Inv(Zin);
		}
		Gammain = EMF.computeGammaAt(Gamma2,xpos-location3);
		    Vin = EMF.computeVat(Gamma2,ZIMP[3],VPlus,xpos-location3,true);
		    Iin = EMF.computeIat(Gamma2,ZIMP[3],VPlus,xpos-location3,true); 
                    lineZ0 = ZIMP[3];
            }*/
                
                /*
                int first = 0, second = 0;
                for(int i=0; i < 10; i++){
                    for(int j=0; j < 10; j++){
                        for(int k=0; k < 10; k++){
                            for(int l=0; l < 10; l++){
                                for(int m=0; m < 10; m++){
                                    first = (i*10000 + j*1000 + k * 100 + l * 10 + m) * 4;
                                    second = m*10000 + l*1000 + k * 100 + j * 10 + i;
                                    if(first == second){
                                        System.out.println(second+"   "+first+" "+i+"  "+j+"  "+k+"  "+l+"  "+m);
                                    }
                                }
                            }
                            
                        }
                    }
                }
                */
	}
	
    }
    
    public synchronized void increment(){
	ctime+=dtime;
	if(ctime>NTime){ ctime -= NTime; }
    }
    
    public synchronized void reset(){
	ctime=0;
    }
    
    public void ScanImpedance(){
        
	int i;
	Complex tempC = new Complex(0.0,0.0);
	
	for(i = 0; i < SPos0; i++){
	    x[i]  = (i+1) * lineLength/(NPoints-1);
	    Admittance[i] = EMF.computeYinAt(YL,ZIMP[0],x[i],false);
	}
	for(i = SPos0; i < SPos1; i++){
	    x[i] = (i+1) * lineLength/(NPoints-1);
	    Admittance[i] = EMF.computeYinAt(Y0,ZIMP[1],x[i]-locations[0],false);
            tempC = EMF.Inv(Admittance[i]);
            //System.out.println(i+"  "+x[i]+"  "+Admittance[i]+"  "+tempC.Real()+"   "+tempC.Imaginary());
	}
	
	for(i = SPos1; i < SPos2; i++){
	    x[i] = (i+1) * lineLength/(NPoints-1);
	    Admittance[i] = EMF.computeYinAt(Y1,ZIMP[2],x[i]-locations[1],false);
	}
	
        for(i = SPos2; i < SPos3; i++){
	    x[i] = (i+1) * lineLength/(NPoints-1);
	    Admittance[i] = EMF.computeYinAt(Y2,ZIMP[3],x[i]-locations[2],false);
	}
        
        for(i = SPos3; i < SPos4; i++){
	    x[i] = (i+1) * lineLength/(NPoints-1);
	    Admittance[i] = EMF.computeYinAt(Y3,ZIMP[4],x[i]-locations[3],false);
	}
        
        for(i = SPos4; i < SPos5; i++){
	    x[i] = (i+1) * lineLength/(NPoints-1);
	    Admittance[i] = EMF.computeYinAt(Y4,ZIMP[5],x[i]-locations[4],false);
	}
        
        for(i = SPos5; i < SPos6; i++){
	    x[i] = (i+1) * lineLength/(NPoints-1);
	    Admittance[i] = EMF.computeYinAt(Y5,ZIMP[6],x[i]-locations[5],false);
	}
        
        for(i = SPos6; i < SPos7; i++){
	    x[i] = (i+1) * lineLength/(NPoints-1);
	    Admittance[i] = EMF.computeYinAt(Y6,ZIMP[7],x[i]-locations[6],false);
	}
        
        for(i = SPos7; i < SPos8; i++){
	    x[i] = (i+1) * lineLength/(NPoints-1);
	    Admittance[i] = EMF.computeYinAt(Y7,ZIMP[8],x[i]-locations[7],false);
	}
        
        for(i = SPos8; i < NPoints; i++){
	    x[i] = (i+1) * lineLength/(NPoints-1);
	    Admittance[i] = EMF.computeYinAt(Y8,ZIMP[9],x[i]-locations[8],false);
	}
        
	for(i = 0; i < NPoints; i++){
	    Impedance[i] = EMF.Inv(Admittance[i]);
	    y1[i] = Impedance[i].Real();
	    y2[i] = Impedance[i].Imaginary();
	}
        y1[NPoints-1] = y1[NPoints-2];
        y2[NPoints-1] = y2[NPoints-2];
    } 
    
    public void ScanAdmittance(){	
	int i;
		
	for(i = 0; i < SPos0; i++){
	    x[i]  = (i+1) * lineLength/(NPoints-1);
	    Admittance[i] = EMF.computeYinAt(YL,ZIMP[0],x[i],false);
	}
	for(i = SPos0; i < SPos1; i++){
	    x[i] = (i+1) * lineLength/(NPoints-1);
	    Admittance[i] = EMF.computeYinAt(Y0,ZIMP[1],x[i]-locations[0],false);
	}
	
	for(i = SPos1; i < SPos2; i++){
	    x[i] = (i+1) * lineLength/(NPoints-1);
	    Admittance[i] = EMF.computeYinAt(Y1,ZIMP[2],x[i]-locations[1],false);
	}
	
        for(i = SPos2; i < SPos3; i++){
	    x[i] = (i+1) * lineLength/(NPoints-1);
	    Admittance[i] = EMF.computeYinAt(Y2,ZIMP[3],x[i]-locations[2],false);
	}
        
        for(i = SPos3; i < SPos4; i++){
	    x[i] = (i+1) * lineLength/(NPoints-1);
	    Admittance[i] = EMF.computeYinAt(Y3,ZIMP[4],x[i]-locations[3],false);
	}
        
        for(i = SPos4; i < SPos5; i++){
	    x[i] = (i+1) * lineLength/(NPoints-1);
	    Admittance[i] = EMF.computeYinAt(Y4,ZIMP[5],x[i]-locations[4],false);
	}
        
        for(i = SPos5; i < SPos6; i++){
	    x[i] = (i+1) * lineLength/(NPoints-1);
	    Admittance[i] = EMF.computeYinAt(Y5,ZIMP[6],x[i]-locations[5],false);
	}
        
        for(i = SPos6; i < SPos7; i++){
	    x[i] = (i+1) * lineLength/(NPoints-1);
	    Admittance[i] = EMF.computeYinAt(Y6,ZIMP[7],x[i]-locations[6],false);
	}
        
        for(i = SPos7; i < SPos8; i++){
	    x[i] = (i+1) * lineLength/(NPoints-1);
	    Admittance[i] = EMF.computeYinAt(Y7,ZIMP[8],x[i]-locations[7],false);
	}
        
        for(i = SPos8; i < NPoints; i++){
	    x[i] = (i+1) * lineLength/(NPoints-1);
	    Admittance[i] = EMF.computeYinAt(Y8,ZIMP[9],x[i]-locations[8],false);
	}
	
	for(i = 0; i < NPoints; i++){
	    y1[i] = Admittance[i].Real();
	    y2[i] = Admittance[i].Imaginary();
	}
        y1[NPoints-1] = y1[NPoints-2];
        y2[NPoints-1] = y2[NPoints-2];
    }
    
    public void ScanReflectionCoefficient(){
	int i;
	
	for(i = 0; i < SPos0; i++){
	    x[i]  = (i+1) * lineLength/(NPoints-1);
	    RefCoef[i] = EMF.computeGammaAt(GammaL,x[i]);
	}
	
	for(i = SPos0; i < SPos1; i++){
	    x[i] = (i+1) * lineLength/(NPoints-1);
	    RefCoef[i] = EMF.computeGammaAt(Gamma0,x[i]-locations[0]);
	}
	
	for(i = SPos1; i < SPos2; i++){
	    x[i] = (i+1) * lineLength/(NPoints-1);
	    RefCoef[i] = EMF.computeGammaAt(Gamma1,x[i]-locations[1]);
	}
	
        for(i = SPos2; i < SPos3; i++){
	    x[i] = (i+1) * lineLength/(NPoints-1);
	    RefCoef[i] = EMF.computeGammaAt(Gamma2,x[i]-locations[2]);
	}
        
        for(i = SPos3; i < SPos4; i++){
	    x[i] = (i+1) * lineLength/(NPoints-1);
	    RefCoef[i] = EMF.computeGammaAt(Gamma3,x[i]-locations[3]);
	}
        
        for(i = SPos4; i < SPos5; i++){
	    x[i] = (i+1) * lineLength/(NPoints-1);
	    RefCoef[i] = EMF.computeGammaAt(Gamma4,x[i]-locations[4]);
	}
        
        for(i = SPos5; i < SPos6; i++){
	    x[i] = (i+1) * lineLength/(NPoints-1);
	    RefCoef[i] = EMF.computeGammaAt(Gamma5,x[i]-locations[5]);
	}
        
        for(i = SPos6; i < SPos7; i++){
	    x[i] = (i+1) * lineLength/(NPoints-1);
	    RefCoef[i] = EMF.computeGammaAt(Gamma6,x[i]-locations[6]);
	}
        
        for(i = SPos7; i < SPos8; i++){
	    x[i] = (i+1) * lineLength/(NPoints-1);
	    RefCoef[i] = EMF.computeGammaAt(Gamma7,x[i]-locations[7]);
	}
        
        for(i = SPos8; i < NPoints; i++){
	    x[i] = (i+1) * lineLength/(NPoints-1);
	    RefCoef[i] = EMF.computeGammaAt(Gamma8,x[i]-locations[8]);
	}
        
	for(i = 0; i < NPoints; i++){
	    y1[i] = RefCoef[i].Real();
	    y2[i] = RefCoef[i].Imaginary();
	}
        y1[NPoints-1] = y1[NPoints-2];
        y2[NPoints-1] = y2[NPoints-2];
    }
        
    
   public void ScanVoltage(){
	int i;
	
	for(i = 0; i < SPos0; i++){
	    x[i]  = (i+1) * lineLength/(NPoints-1);
	    Voltage[i] = EMF.computeVat(GammaL,ZIMP[0],VPP[0],x[i],true);
	}
	
	for(i = SPos0; i < SPos1; i++){
	    x[i] = (i+1) * lineLength/(NPoints-1);
	    Voltage[i] = EMF.computeVat(Gamma0,ZIMP[1],VPP[1],x[i]-locations[0],true);
	}
	
	for(i = SPos1; i < SPos2; i++){
	    x[i] = (i+1) * lineLength/(NPoints-1);
	    Voltage[i] = EMF.computeVat(Gamma1,ZIMP[2],VPP[2],x[i]-locations[1],true);
	}
	
        for(i = SPos2; i < SPos3; i++){
	    x[i] = (i+1) * lineLength/(NPoints-1);
	    Voltage[i] = EMF.computeVat(Gamma2,ZIMP[3],VPP[3],x[i]-locations[2],true);
	}
        
        for(i = SPos3; i < SPos4; i++){
	    x[i] = (i+1) * lineLength/(NPoints-1);
	    Voltage[i] = EMF.computeVat(Gamma3,ZIMP[4],VPP[4],x[i]-locations[3],true);
	}
        
        for(i = SPos4; i < SPos5; i++){
	    x[i] = (i+1) * lineLength/(NPoints-1);
	    Voltage[i] = EMF.computeVat(Gamma4,ZIMP[5],VPP[5],x[i]-locations[4],true);
	}
        
        for(i = SPos5; i < SPos6; i++){
	    x[i] = (i+1) * lineLength/(NPoints-1);
	    Voltage[i] = EMF.computeVat(Gamma5,ZIMP[6],VPP[6],x[i]-locations[5],true);
	}
        
        for(i = SPos6; i < SPos7; i++){
	    x[i] = (i+1) * lineLength/(NPoints-1);
	    Voltage[i] = EMF.computeVat(Gamma6,ZIMP[7],VPP[7],x[i]-locations[6],true);
	}
        
        for(i = SPos7; i < SPos8; i++){
	    x[i] = (i+1) * lineLength/(NPoints-1);
	    Voltage[i] = EMF.computeVat(Gamma7,ZIMP[8],VPP[8],x[i]-locations[7],true);
	}
        
        for(i = SPos8; i < NPoints; i++){
	    x[i] = (i+1) * lineLength/(NPoints-1);
	    Voltage[i] = EMF.computeVat(Gamma8,ZIMP[9],VPlus,x[i]-locations[8],true);
	}
        
        for(i = 0; i < NPoints; i++){
	    y1[i] = Voltage[i].Real();
	    y2[i] = Voltage[i].Imaginary();
            
            yV1[i] = Voltage[i].Magnitude();
            yV2[i] = - yV1[i];
	}
        y1[NPoints-1] = y1[NPoints-2];
        y2[NPoints-1] = y2[NPoints-2];
        yV1[NPoints-1] = yV1[NPoints-2];
        yV2[NPoints-1] = yV2[NPoints-2];
    }
   
     public void ScanCurrent(){
	int i;
	
	for(i = 0; i < SPos0; i++){
	    x[i]  = (i+1) * lineLength/(NPoints-1);
	    Current[i] = EMF.computeIat(GammaL,ZIMP[0],VPP[0],x[i],true);
	}
	
	for(i = SPos0; i < SPos1; i++){
	    x[i] = (i+1) * lineLength/(NPoints-1);
	    Current[i] = EMF.computeIat(Gamma0,ZIMP[1],VPP[1],x[i]-locations[0],true);
	}
	
	for(i = SPos1; i < SPos2; i++){
	    x[i] = (i+1) * lineLength/(NPoints-1);
	    Current[i] = EMF.computeIat(Gamma1,ZIMP[2],VPP[2],x[i]-locations[1],true);
	}
	
        for(i = SPos2; i < SPos3; i++){
	    x[i] = (i+1) * lineLength/(NPoints-1);
	    Current[i] = EMF.computeIat(Gamma2,ZIMP[3],VPP[3],x[i]-locations[2],true);
	}
	
        for(i = SPos3; i < SPos4; i++){
	    x[i] = (i+1) * lineLength/(NPoints-1);
	    Current[i] = EMF.computeIat(Gamma3,ZIMP[4],VPP[4],x[i]-locations[3],true);
	}
        
        for(i = SPos4; i < SPos5; i++){
	    x[i] = (i+1) * lineLength/(NPoints-1);
	    Current[i] = EMF.computeIat(Gamma4,ZIMP[5],VPP[5],x[i]-locations[4],true);
	}
        
        for(i = SPos5; i < SPos6; i++){
	    x[i] = (i+1) * lineLength/(NPoints-1);
	    Current[i] = EMF.computeIat(Gamma5,ZIMP[6],VPP[6],x[i]-locations[5],true);
	}
        
        for(i = SPos6; i < SPos7; i++){
	    x[i] = (i+1) * lineLength/(NPoints-1);
	    Current[i] = EMF.computeIat(Gamma6,ZIMP[7],VPP[7],x[i]-locations[6],true);
	}
        
        for(i = SPos7; i < SPos8; i++){
	    x[i] = (i+1) * lineLength/(NPoints-1);
	    Current[i] = EMF.computeIat(Gamma7,ZIMP[8],VPP[8],x[i]-locations[7],true);
	}
        
        for(i = SPos8; i < NPoints; i++){
	    x[i] = (i+1) * lineLength/(NPoints-1);
	    Current[i] = EMF.computeIat(Gamma8,ZIMP[9],VPlus,x[i]-locations[8],true);
	}
        
        for(i = 0; i < NPoints; i++){
	    y1[i] = Current[i].Real();
	    y2[i] = Current[i].Imaginary();
            
            yV1[i] = Current[i].Magnitude();
            yV2[i] = - yV1[i];
	}
        
        y1[NPoints-1] = y1[NPoints-2];
        y2[NPoints-1] = y2[NPoints-2];
        yV1[NPoints-1] = yV1[NPoints-2];
        yV2[NPoints-1] = yV2[NPoints-2];
    }
    
    
    public void ScanVoltageCurrent(){
	int i;
	
	for(i = 0; i < SPos0; i++){
	    x[i]  = (i+1) * lineLength/(NPoints-1);
	    Voltage[i] = EMF.computeVat(GammaL,ZIMP[0],VPP[0],x[i],true);
	    Current[i] = EMF.computeIat(GammaL,ZIMP[0],VPP[0],x[i],true);
	}
	
	for(i = SPos0; i < SPos1; i++){
	    x[i] = (i+1) * lineLength/(NPoints-1);
	    Voltage[i] = EMF.computeVat(Gamma0,ZIMP[1],VPP[1],x[i]-locations[0],true);
	    Current[i] = EMF.computeIat(Gamma0,ZIMP[1],VPP[1],x[i]-locations[0],true);
	}
	
	for(i = SPos1; i < SPos2; i++){
	    x[i] = (i+1) * lineLength/(NPoints-1);
	    Voltage[i] = EMF.computeVat(Gamma1,ZIMP[2],VPP[2],x[i]-locations[1],true);
	    Current[i] = EMF.computeIat(Gamma1,ZIMP[2],VPP[2],x[i]-locations[1],true);
	}
	
        for(i = SPos2; i < SPos3; i++){
	    x[i] = (i+1) * lineLength/(NPoints-1);
	    Voltage[i] = EMF.computeVat(Gamma2,ZIMP[3],VPP[3],x[i]-locations[2],true);
	    Current[i] = EMF.computeIat(Gamma2,ZIMP[3],VPP[3],x[i]-locations[2],true);
	}
        
        for(i = SPos3; i < SPos4; i++){
	    x[i] = (i+1) * lineLength/(NPoints-1);
	    Voltage[i] = EMF.computeVat(Gamma3,ZIMP[4],VPP[4],x[i]-locations[3],true);
	    Current[i] = EMF.computeIat(Gamma3,ZIMP[4],VPP[4],x[i]-locations[3],true);
	}
        
        for(i = SPos4; i < SPos5; i++){
	    x[i] = (i+1) * lineLength/(NPoints-1);
	    Voltage[i] = EMF.computeVat(Gamma4,ZIMP[5],VPP[5],x[i]-locations[4],true);
	    Current[i] = EMF.computeIat(Gamma4,ZIMP[5],VPP[5],x[i]-locations[4],true);
	}
        
        for(i = SPos5; i < SPos6; i++){
	    x[i] = (i+1) * lineLength/(NPoints-1);
	    Voltage[i] = EMF.computeVat(Gamma5,ZIMP[6],VPP[6],x[i]-locations[5],true);
	    Current[i] = EMF.computeIat(Gamma5,ZIMP[6],VPP[6],x[i]-locations[5],true);
	}
        
        for(i = SPos6; i < SPos7; i++){
	    x[i] = (i+1) * lineLength/(NPoints-1);
	    Voltage[i] = EMF.computeVat(Gamma6,ZIMP[7],VPP[7],x[i]-locations[6],true);
	    Current[i] = EMF.computeIat(Gamma6,ZIMP[7],VPP[7],x[i]-locations[6],true);
	}
        
        for(i = SPos7; i < SPos8; i++){
	    x[i] = (i+1) * lineLength/(NPoints-1);
	    Voltage[i] = EMF.computeVat(Gamma7,ZIMP[8],VPP[8],x[i]-locations[7],true);
	    Current[i] = EMF.computeIat(Gamma7,ZIMP[8],VPP[8],x[i]-locations[7],true);
	}
        
        for(i = SPos8; i < NPoints; i++){
	    x[i] = (i+1) * lineLength/(NPoints-1);
	    Voltage[i] = EMF.computeVat(Gamma8,ZIMP[9],VPlus,x[i]-locations[8],true);
	    Current[i] = EMF.computeIat(Gamma8,ZIMP[9],VPlus,x[i]-locations[8],true);
	}
        
	for(i = 0; i < NPoints; i++){
	    y1[i] = Voltage[i].Magnitude();
	    y2[i] = Current[i].Magnitude();
	}
        y1[NPoints-1] = y1[NPoints-2];
        y2[NPoints-1] = y2[NPoints-2];
    }
    
    public void ScanTimeAveragePower(){
	ScanVoltageCurrent();
	for(int i = 0; i < NPoints; i++){
	    y1[i] = EMF.TimeAveragedPower(Voltage[i],Current[i]);
	    y2[i] = 0.0;
	}
        y1[NPoints-1] = y1[NPoints-2];
        y2[NPoints-1] = y2[NPoints-2];
    }
    
    public void ScanRandom(){
	for(int i = 0; i < NPoints; i++){
	    x[i] = i * lineLength/(NPoints-1);
	    y1[i] = -100.0 + 200.0*Math.random();
	    y2[i] = -100.0 + 200.0*Math.random();
	}
    }
    
    public void ScanTimeDependentVoltage(){
	timeFactor.setReal(Math.cos(2.0*Math.PI*ctime/NTime));
	timeFactor.setImaginary(Math.sin(2.0*Math.PI*ctime/NTime));
	ScanVoltage();
	for(int i = 0; i < NPoints; i++){
	    yV1[i] = Voltage[i].Magnitude();
            yV2[i] = - yV1[i];
            Voltage[i].Multiply(timeFactor);
	    y1[i] = Voltage[i].Real();
	    y2[i] = 0.0;
	}
        y1[NPoints-1] = y1[NPoints-2];
        y2[NPoints-1] = y2[NPoints-2];
        yV1[NPoints-1] = yV1[NPoints-2];
        yV2[NPoints-1] = yV2[NPoints-2];
        y1[0] = y1[1];
        y2[0] = y2[1];
        yV1[0] = yV1[1];
        yV2[0] = yV2[1];
    }
    
    public void ScanTimeDependentCurrent(){
	timeFactor.setReal(Math.cos(2.0*Math.PI*ctime/NTime));
	timeFactor.setImaginary(Math.sin(2.0*Math.PI*ctime/NTime));
	ScanCurrent();
	for(int i = 0; i < NPoints; i++){
	    yV1[i] = Current[i].Magnitude();
            yV2[i] = - yV1[i];
            Current[i].Multiply(timeFactor);
	    y1[i] = Current[i].Real();
	    y2[i] = 0.0;
	}
        y1[NPoints-1] = y1[NPoints-2];
        y2[NPoints-1] = y2[NPoints-2];
        yV1[NPoints-1] = yV1[NPoints-2];
        yV2[NPoints-1] = yV2[NPoints-2];
        
        y1[0] = y1[1];
        y2[0] = y2[1];
        yV1[0] = yV1[1];
        yV2[0] = yV2[1];
    }
    
    public void ScanTimeDependentPower(){
		
	timeFactor.setReal(Math.cos(2.0*Math.PI*ctime/NTime));
	timeFactor.setImaginary(Math.sin(2.0*Math.PI*ctime/NTime));
	ScanVoltageCurrent();
        Ptest = 0.0;
        double Pcheck = 0;
	for(int i = 0; i < NPoints; i++){
	    Voltage[i].Multiply(timeFactor);
	    Current[i].Multiply(timeFactor);
	    Power[i] = Complex.Multiply(Voltage[i],Current[i]);
	    //y1[i] = Power[i].Real();
	    y1[i] = Complex.Real(Voltage[i])*Complex.Real(Current[i]);
	    y2[i] = 0.0;
            Pcheck = Complex.Magnitude(Power[i]);
            if(Pcheck > Ptest){Ptest = Pcheck;}
            yV1[i] = 0.0; //Pcheck * Math.cos(Math.PI/180.0(Complex.Arg1(Voltage[i])-Complex.Arg1(Current[i])));
            
            yV2[i] = 0.0;
            //System.out.println(i+"  "+Math.cos(Math.PI/180.0*(Complex.Arg1(Voltage[i])-Complex.Arg1(Current[i]))));
	}
            y1[NPoints-1] = y1[NPoints-2];
            y2[NPoints-1] = y2[NPoints-2];
            yV1[NPoints-1] = yV1[NPoints-2];
            yV2[NPoints-1] = yV2[NPoints-2];
            y1[0] = y1[1];
            y2[0] = y2[1];
            yV1[0] = yV1[1];
            yV2[0] = yV2[1];
    }
    
    public double getYRangeMax(int i){//arg=1 for Voltage Max
	//Complex VPlus = EMF.computeVPlus(generator,ZL,lineZ0,lineLength);
	double tmp=0.0;
	ignition();
	
	/*
	switch(i){
	    case 1://Voltage
		if(!stub[0].isEnable() && !stub[1].isEnable() && !stub[2].isEnable()){
		    tmp = 2.0*VPlus.Magnitude();
		}
		else{
		    tmp = 3.0*VPlus.Magnitude();
		}
		break;
	    case 2://Current
		if(!stub[0].isEnable() && !stub[1].isEnable() && !stub[2].isEnable()){
		    tmp = 2.0*VPlus.Magnitude()/lineZ0;
		}
		else{
		    tmp = 3.0*VPlus.Magnitude()/lineZ0;
		}
		break;
	    case 3://Power
		if(!stub[0].isEnable() && !stub[1].isEnable() && !stub[2].isEnable()){
		    tmp = 2.0*VPlus.Magnitude2()/lineZ0;
		}
		else{
		    tmp = 3.0*VPlus.Magnitude2()/lineZ0;
		}
	}
        */
        switch(i){
	    case 1://Voltage
		//if(!stub[0].isEnable() && !stub[1].isEnable() && !stub[2].isEnable()){
		  //  tmp = 2.0*VPlus.Magnitude();
		//}
		//else
                {
		    tmp = PlotTimeScale*VPmax.Magnitude();
		}
		break;
	    case 2://Current
		//if(!stub[0].isEnable() && !stub[1].isEnable() && !stub[2].isEnable()){
		//    tmp = 2.0*VPlus.Magnitude()/ZIMP[0];
		//}
		//else
                {
		    tmp = PlotTimeScale*VPmax.Magnitude()/ZIMPmin;
		}
		break;
	    case 3://Power
		//if(!stub[0].isEnable() && !stub[1].isEnable() && !stub[2].isEnable()){
		  //  tmp = 2.0*VPlus.Magnitude2()/ZIMP[0];
		//}
		//else
                {
		    //tmp = PlotTimeScale*VPmax.Magnitude2()/ZIMPmin;
                    //tmp = PlotTimeScale*Pw[0];
                    tmp = PlotTimeScale*0.5*Ptest;
		}
	}
	return tmp;
    }
  
 
    //Sorts stubs and returns the results in an integer array iarray[].
    //The sort is perfrom in increasing stub's distance from the load
    //iarray[0] is first stub (closest to the load)
    //iarray[1] is second stub
    //iarray[3] is third stub	(farthest from the load)

private void sortStubs(){
	double tmp;
	iarray[0]=-1;
	iarray[1]=-1;
	iarray[2]=-1;
	
	iarray[0]=0;
	tmp=stub[iarray[0]].getPosition();
	for(int j=0;j<3;j++){
		if(tmp > stub[j].getPosition()){
			tmp=stub[j].getPosition();
			iarray[0]=j;
		}
	}

	if(iarray[0]!=0) {iarray[1]=0;}
	else{iarray[1]=1;}
	tmp=stub[iarray[1]].getPosition();
	for(int j=0;j<3;j++){
		if(j != iarray[0] && tmp > stub[j].getPosition()){
			tmp=stub[j].getPosition();
			iarray[1]=j;
		}
	}

	if(iarray[0] !=0 && iarray[1] !=0) { iarray[2]=0; }
	else if(iarray[0] !=1 && iarray[1] !=1) { iarray[2]=1; }
	else {iarray[2]=2;}
	/*
	tmp=stub[iarray[2]].getPosition();
	for(int j=0;j<3;j++){
		if(j != iarray[0] && j !=iarray[1] && tmp > stub[j].getPosition()){
			tmp=stub[j].getPosition();
			iarray[2]=j;
		}
	}
	*/
	
}



}/*State.java*/
