private void btnSM_GenerateStokesCurves_Click(object sender, EventArgs e) { int pointsCount; double poleOptDepth; double scale; if (this.magSrf == null) { return; } try { pointsCount = int.Parse(txtSM_PointsNumber.Text); poleOptDepth = double.Parse(txtSM_PoleOptDepth.Text); scale = double.Parse(txtSM_Scale.Text); } catch { MessageBox.Show("Wrong format...", "Error..."); return; } txtSM_Results.Text += "\r\nModel parameters:"; txtSM_Results.Text += string.Format("\r\nInc[deg]: {0:00.000}", this.magSrf.InclinationOfRotationAxis * 180 / Math.PI); txtSM_Results.Text += string.Format("\r\nLat. Dipol Offset [deg]: {0:00.000}", this.magSrf.LatitudeDipolOffset * 180 / Math.PI); txtSM_Results.Text += string.Format("\r\nLong. Dipol Offset [deg]: {0:00.000}", this.magSrf.LongitudeDipolOffset * 180 / Math.PI); try { this.stokesProvider = new Maper.StokesImaging.StokesParsProvider( @txtPathToStockesIGrid.Text, @txtPathToStockesQGrid.Text, @txtPathToStockesVGrid.Text ); } catch { MessageBox.Show("Cannot find some Stockes Grid file...", "Error..."); txtSM_Results.Text += "\r\nOops... Some error was occured..."; return; } //StokesImaging.WM85Interpolator wm85 = new Maper.StokesImaging.WM85Interpolator(); double[] phases = new double[pointsCount]; for (int i = 0; i < phases.Length; i++) { phases[i] = i / (double)pointsCount; } //this.stokesModeller = new Maper.StokesImaging.StokesModeller( // /*stokesProvider.StokesI*/ wm85.GetStokesI, // /*stokesProvider.StokesV*/ wm85.GetStokesV, // /*stokesProvider.StokesQ*/ wm85.GetStokesQ, // stokesProvider.StokesU, // this.magSrf); this.stokesModeller = new Maper.StokesImaging.StokesModeller( stokesProvider.StokesI, stokesProvider.StokesV, stokesProvider.StokesQ, stokesProvider.StokesU, this.magSrf); this.stokesModeller.StartStokesCurvesModelling(phases, scale, poleOptDepth); LinePlot lpI = new LinePlot(this.stokesModeller.StokesI, phases); LinePlot lpV = new LinePlot(this.stokesModeller.StokesV, phases); LinePlot lpQ = new LinePlot(this.stokesModeller.StokesQ, phases); LinePlot lpU = new LinePlot(this.stokesModeller.StokesU, phases); plotSM_StokesI.Add(lpI); plotSM_StokesV.Add(lpV); plotSM_StokesQ.Add(lpQ); plotSM_StokesU.Add(lpU); plotSM_StokesI.Title = "Stokes I Curve"; plotSM_StokesQ.Title = "Stokes Q Curve"; plotSM_StokesU.Title = "Stokes U Curve"; plotSM_StokesV.Title = "Stokes V Curve"; plotSM_StokesI.XAxis1.Label = "Phase"; plotSM_StokesQ.XAxis1.Label = "Phase"; plotSM_StokesU.XAxis1.Label = "Phase"; plotSM_StokesV.XAxis1.Label = "Phase"; plotSM_StokesI.Refresh(); plotSM_StokesV.Refresh(); plotSM_StokesQ.Refresh(); plotSM_StokesU.Refresh(); txtSM_Results.Text += "\r\nError String: " + this.stokesModeller.ErrorString; }
private void button1_Click(object sender, EventArgs e) { int pointsCount; double poleOptDepth; double scale; try { pointsCount = int.Parse(txtSM_PointsNumber.Text); poleOptDepth = double.Parse(txtSM_PoleOptDepth.Text); scale = double.Parse(txtSM_Scale.Text); } catch { MessageBox.Show("Wrong format...", "Error..."); return; } /////////////////////////////////////////////////////////////////////////////////////// try { this.stokesProvider = new Maper.StokesImaging.StokesParsProvider( @txtPathToStockesIGrid.Text, @txtPathToStockesQGrid.Text, @txtPathToStockesVGrid.Text ); } catch { MessageBox.Show("Cannot find some Stockes Grid file...", "Error..."); txtSM_Results.Text += "\r\nOops... Some error was occured..."; return; } double[] phases = new double[pointsCount]; for (int i = 0; i < phases.Length; i++) { phases[i] = i / (double)pointsCount; } StreamWriter sw = new StreamWriter("D:\\out.dat"); for (double bbg = 0; bbg <= 38.0; bbg = bbg + 0.5) { double mm1 = 49 * 1e6, mm2 = 51 * 1e6; mm1 = 43.31554 - 0.25286 * bbg + 0.00373 * bbg * bbg; // 39 mm2 = 57.93482 - 0.41099 * bbg + 0.00617 * bbg * bbg; // 51 mm1 = mm1 * 1e6; mm2 = mm2 * 1e6; magSrf = new Maper.StokesImaging.MagnetizedSurface(79 * Math.PI / 180, bbg * Math.PI / 180, 80 * Math.PI / 180, mm1, mm2, 360, 720, 0); this.stokesModeller = new Maper.StokesImaging.StokesModeller( stokesProvider.StokesI, stokesProvider.StokesV, stokesProvider.StokesQ, stokesProvider.StokesU, this.magSrf); this.magSrf.AddRectSpot((38 - bbg) * Math.PI / 180, //! (39 - bbg) * Math.PI / 180, //! 179 * Math.PI / 180, 181 * Math.PI / 180, 1.0); for (double l = 1; l <= 6; l = l + 0.1) { this.stokesModeller.StartStokesCurvesModelling(phases, scale, Math.Pow(10, l) * 39e6 / mm1); double[] sti = stokesModeller.StokesI; double[] stv = stokesModeller.StokesV; sw.Write(string.Format("{0}\t{1}\t", bbg, l).Replace(",", ".")); for (int k = 0; k < sti.Length; k++) { sw.Write(string.Format("{0}\t", sti[k]).Replace(",", ".")); } for (int k = 0; k < stv.Length; k++) { sw.Write(string.Format("{0}\t", stv[k]).Replace(",", ".")); } sw.Write("\r\n"); } } sw.Close(); txtSM_Results.Text += "\r\nError String: " + this.stokesModeller.ErrorString; }