private void ReadBands() { Console.WriteLine("Reading bands from {0} file.", bandFile); int numBands = 0; int numPoints = 0; using (var r = new StreamReader(bandFile)) { string first = r.ReadLine(); if (first.StartsWith("#") == false) { throw new Exception("Could not read bands file."); } first = first.Substring(1); double[] vals = GetVals(first); numPoints = (int)(vals[2] + 0.5); numBands = (int)(vals[4] + 0.5); AgrDataset[] data = new AgrDataset[numBands]; for (int j = 0; j < numBands; j++) { data[j] = new AgrDataset(); } for (int i = 0; i < numPoints; i++) { // skip comment r.ReadLine(); string line = r.ReadLine(); vals = GetVals(line); for (int j = 0; j < numBands; j++) { AgrDataPoint dp = new AgrDataPoint(); dp.X = vals[0]; dp.Y = vals[j + 1]; data[j].Data.Add(dp); } } this.data.AddRange(data); } Console.WriteLine("Found {0} bands, with {1} k-points.", numBands, numPoints); Console.WriteLine(); }
private void ReadWeights() { Console.WriteLine("Reading weights from {0} file.", weightsFile); int numBands = 0; int numPoints = 0; int ptCount = 0; using (var r = new StreamReader(weightsFile)) { string first = r.ReadLine(); if (first.StartsWith("#") == false) { throw new Exception("Could not read bands file."); } first = first.Substring(1); double[] vals = GetVals(first); numPoints = (int)(vals[2] + 0.5); numBands = (int)(vals[4] + 0.5); r.ReadLine(); AgrDataset[] data = new AgrDataset[plots.Count]; for (int i = 0; i < plots.Count; i++) { data[i] = new AgrDataset(); data[i].DatasetType = DatasetType.xysize; data[i].Legend = State(plots[i]).Name; data[i].LineStyle = LineStyle.None; data[i].Symbol = Symbol.Circle; data[i].SymbolColor = (GraceColor)i + 1; data[i].SymbolFillColor = (GraceColor)i + 1; data[i].SymbolFill = SymbolFill.Solid; } const double scaleFactor = 1.5; for (int i = 0; i < numPoints; i++) { for (int j = 0; j < numBands; j++) { string line = r.ReadLine(); vals = GetVals(line); double x = vals[0]; double y = vals[1]; for (int k = 0; k < plots.Count; k++) { int index = plots[k] + 1; AgrDataPoint dp = new AgrDataPoint { X = x, Y = y }; dp.Weight = vals[index] * scaleFactor; if (dp.Weight < 0.03) { continue; } data[k].Data.Add(dp); ptCount += 1; } } } this.data.AddRange(data); } Console.WriteLine("Found {0} bands, with {1} points with weight.", numBands, ptCount); Console.WriteLine(); }
private void ReadWeights() { Console.WriteLine("Reading weights from {0} file.", weightsFile); int numBands = 0; int numPoints = 0; int ptCount = 0; using (var r = new StreamReader(weightsFile)) { string first = r.ReadLine(); if (first.StartsWith("#") == false) throw new Exception("Could not read bands file."); first = first.Substring(1); double[] vals = GetVals(first); numPoints = (int)(vals[2] + 0.5); numBands = (int)(vals[4] + 0.5); r.ReadLine(); AgrDataset[] data = new AgrDataset[plots.Count]; for (int i = 0; i < plots.Count; i++) { data[i] = new AgrDataset(); data[i].DatasetType = DatasetType.xysize; data[i].Legend = State(plots[i]).Name; data[i].LineStyle = LineStyle.None; data[i].Symbol = Symbol.Circle; data[i].SymbolColor = (GraceColor)i + 1; data[i].SymbolFillColor = (GraceColor)i + 1; data[i].SymbolFill = SymbolFill.Solid; } const double scaleFactor = 1.5; for (int i = 0; i < numPoints; i++) { for (int j = 0; j < numBands; j++) { string line = r.ReadLine(); vals = GetVals(line); double x = vals[0]; double y = vals[1]; for (int k = 0; k < plots.Count; k++) { int index = plots[k] + 1; AgrDataPoint dp = new AgrDataPoint { X = x, Y = y }; dp.Weight = vals[index] * scaleFactor; if (dp.Weight < 0.03) continue; data[k].Data.Add(dp); ptCount += 1; } } } this.data.AddRange(data); } Console.WriteLine("Found {0} bands, with {1} points with weight.", numBands, ptCount); Console.WriteLine(); }
private void WriteData(AgrDataset[] agrDataset, List<SymmetryPoint> sympoints) { int index = 0; WriteGraceHeader(sympoints); foreach (var data in agrDataset) { WriteGraceSetLineColor(index, (int)data.LineColor); WriteGraceSetLineStyle(index, (int)data.LineStyle); WriteGraceSetSymbol(index, (int)data.Symbol); WriteGraceSetSymbolColor(index, (int)data.SymbolColor); WriteGraceSetSymbolFill(index, (int)data.SymbolFill); WriteGraceLegend(index, data.Legend); index++; } index = 0; foreach (var data in agrDataset) { if (data.DatasetType == DatasetType.xy) { WriteGraceDataset(data.Data.Count, x => new Pair<double, double>(data.Data[x].X, data.Data[x].Y)); } else { WriteGraceDataset(data.DatasetType.ToString(), data.Data.Count, x => new Triplet<double, double, double>(data.Data[x].X, data.Data[x].Y, data.Data[x].Weight)); } index++; } }
private void ReadBands() { Console.WriteLine("Reading bands from {0} file.", bandFile); int numBands = 0; int numPoints = 0; using (var r = new StreamReader(bandFile)) { string first = r.ReadLine(); if (first.StartsWith("#") == false) throw new Exception("Could not read bands file."); first = first.Substring(1); double[] vals = GetVals(first); numPoints = (int)(vals[2] + 0.5); numBands = (int)(vals[4] + 0.5); AgrDataset[] data = new AgrDataset[numBands]; for (int j = 0; j < numBands; j++) { data[j] = new AgrDataset(); } for (int i = 0; i < numPoints; i++) { // skip comment r.ReadLine(); string line = r.ReadLine(); vals = GetVals(line); for (int j = 0; j < numBands; j++) { AgrDataPoint dp = new AgrDataPoint(); dp.X = vals[0]; dp.Y = vals[j+1]; data[j].Data.Add(dp); } } this.data.AddRange(data); } Console.WriteLine("Found {0} bands, with {1} k-points.", numBands, numPoints); Console.WriteLine(); }