public override object Read(string path) { var obj = new TurbinePropertiesData(); string text = Load(path); var grammar = new OpenFoamGrammar(); var parser = new Parser(grammar); var tree = parser.Parse(text); foreach (ParseTreeNode rootEntryNode in tree.Root.FindDictEntries(null)) { var identifier = rootEntryNode.GetEntryIdentifier(); switch (identifier) { case "NumBl": obj.NumBl = rootEntryNode.GetBasicValInt(); break; case "TipRad": obj.TipRad = rootEntryNode.GetBasicValDecimal(); break; case "HubRad": obj.HubRad = rootEntryNode.GetBasicValDecimal(); break; case "UndSling": obj.UndSling = rootEntryNode.GetBasicValDecimal(); break; case "OverHang": obj.OverHang = rootEntryNode.GetBasicValDecimal(); break; case "TowerHt": obj.TowerHt = rootEntryNode.GetBasicValDecimal(); break; case "Twr2Shft": obj.Twr2Shft = rootEntryNode.GetBasicValDecimal(); break; case "ShftTilt": obj.ShftTilt = rootEntryNode.GetBasicValDecimal(); break; case "PreCone": { var dict = rootEntryNode.GetDictArrayBody(); var array = dict.GetArrayOfDecimal(); obj.PreCone = new Vertice(array[0], array[1], array[2]); } break; case "GBRatio": obj.GBRatio = rootEntryNode.GetBasicValDecimal();; break; case "GenIner": obj.GenIner = rootEntryNode.GetBasicValDecimal(); break; case "HubIner": obj.HubIner = rootEntryNode.GetBasicValDecimal(); break; case "BladeIner": obj.BladeIner = rootEntryNode.GetBasicValDecimal(); break; case "TorqueControllerType": obj.TorqueControllerType = rootEntryNode.GetBasicValEnum <ControllerType>(); break; case "YawControllerType": obj.YawControllerType = rootEntryNode.GetBasicValEnum <ControllerType>(); break; case "PitchControllerType": obj.PitchControllerType = rootEntryNode.GetBasicValEnum <ControllerType>(); break; case "TorqueControllerParams": obj.torqueControllerParams = TorqueControllerParamsHandler(rootEntryNode.GetDictContent()); break; case "PitchControllerParams": obj.pitchControllerParams = PitchControllerParamsHandler(rootEntryNode.GetDictContent()); break; case "Airfoils": { var dict = rootEntryNode.GetDictArrayBody(); for (int i = 0; i < dict.ChildNodes.Count; i++) { var item = new AirfoilBlade(); item.AirfoilName = dict.ChildNodes[i].ChildNodes[0].Token.Text.Replace("\"", ""); item.Blade = new List <Vertice>(); obj.airfoilBlade.Add(item); } } break; case "BladeData": { var dict = rootEntryNode.GetDictArrayBody(); for (int i = 0; i < dict.ChildNodes.Count; i++) { var array_head = dict.ChildNodes[i].ChildNodes[0].ChildNodes[1].ChildNodes; if (array_head.Count > 3) { var airfoil_id = Convert.ToInt32(array_head[3].ChildNodes[0].Token.Value); if ((airfoil_id >= 0) && (airfoil_id < obj.airfoilBlade.Count)) { var blade_prop = new Vertice(); blade_prop.X = Convert.ToDecimal(array_head[0].ChildNodes[0].Token.Value); blade_prop.Y = Convert.ToDecimal(array_head[1].ChildNodes[0].Token.Value); blade_prop.Z = Convert.ToDecimal(array_head[2].ChildNodes[0].Token.Value); obj.airfoilBlade[airfoil_id].Blade.Add(blade_prop); } } } } break; } } return(obj); }
public override object Read(string path) { var obj = new TurbinePropertiesData(); string text; if (!File.Exists(path)) { if (!useDefault) return obj; WriteToFile(path, DefaultData); } using (var reader = new StreamReader(path)) { text = reader.ReadToEnd(); } var grammar = new OpenFoamGrammar(); var parser = new Parser(grammar); var tree = parser.Parse(text); foreach (ParseTreeNode rootEntryNode in tree.Root.FindDictEntries(null)) { var identifier = rootEntryNode.GetEntryIdentifier(); switch ( identifier ) { case "NumBl": obj.NumBl = rootEntryNode.GetBasicValInt(); break; case "TipRad": obj.TipRad = rootEntryNode.GetBasicValDecimal(); break; case "HubRad": obj.HubRad = rootEntryNode.GetBasicValDecimal(); break; case "UndSling": obj.UndSling = rootEntryNode.GetBasicValDecimal(); break; case "OverHang": obj.OverHang = rootEntryNode.GetBasicValDecimal(); break; case "TowerHt": obj.TowerHt = rootEntryNode.GetBasicValDecimal(); break; case "Twr2Shft": obj.Twr2Shft = rootEntryNode.GetBasicValDecimal(); break; case "ShftTilt": obj.ShftTilt = rootEntryNode.GetBasicValDecimal(); break; case "PreCone": { var dict = rootEntryNode.GetDictArrayBody(); var array = dict.GetArrayOfDecimal(); obj.PreCone = new Vertice( array[0], array[1], array[2]); } break; case "GBRatio": obj.GBRatio = rootEntryNode.GetBasicValDecimal();; break; case "GenIner": obj.GenIner = rootEntryNode.GetBasicValDecimal(); break; case "HubIner": obj.HubIner = rootEntryNode.GetBasicValDecimal(); break; case "BladeIner": obj.BladeIner = rootEntryNode.GetBasicValDecimal(); break; case "TorqueControllerType": obj.TorqueControllerType = rootEntryNode.GetBasicValEnum<ControllerType>(); break; case "YawControllerType": obj.YawControllerType = rootEntryNode.GetBasicValEnum<ControllerType>(); break; case "PitchControllerType": obj.PitchControllerType = rootEntryNode.GetBasicValEnum<ControllerType>(); break; case "TorqueControllerParams": obj.torqueControllerParams = TorqueControllerParamsHandler(rootEntryNode.GetDictContent()); break; case "PitchControllerParams": obj.pitchControllerParams = PitchControllerParamsHandler(rootEntryNode.GetDictContent()); break; case "Airfoils": { var dict = rootEntryNode.GetDictArrayBody(); for (int i = 0; i < dict.ChildNodes.Count; i++) { var item = new AirfoilBlade(); item.AirfoilName = dict.ChildNodes[i].ChildNodes[0].Token.Text.Replace("\"", ""); item.Blade = new List<Vertice>(); obj.airfoilBlade.Add(item); } } break; case "BladeData": { var dict = rootEntryNode.GetDictArrayBody(); for (int i = 0; i < dict.ChildNodes.Count; i++) { var array_head = dict.ChildNodes[i].ChildNodes[0].ChildNodes[1].ChildNodes; if (array_head.Count > 3) { var airfoil_id = Convert.ToInt32(array_head[3].ChildNodes[0].Token.Value); if ((airfoil_id >= 0) && (airfoil_id < obj.airfoilBlade.Count)) { var blade_prop = new Vertice(); blade_prop.X = Convert.ToDecimal(array_head[0].ChildNodes[0].Token.Value); blade_prop.Y = Convert.ToDecimal(array_head[1].ChildNodes[0].Token.Value); blade_prop.Z = Convert.ToDecimal(array_head[2].ChildNodes[0].Token.Value); obj.airfoilBlade[airfoil_id].Blade.Add(blade_prop); } } } } break; } } return obj; }
public void Save(string path) { var p = new TurbinePropertiesData() { BladeIner = BladeIner, GBRatio = GBRatio, GenIner = GenIner, HubIner = HubIner, HubRad = HubRad, NumBl = NumBl, OverHang = OverHang, ShftTilt = ShftTilt, TipRad = TipRad, TowerHt = TowerHt, Twr2Shft = Twr2Shft, UndSling = UndSling, PitchControllerType = PitchControllerType, TorqueControllerType = TorqueControllerType, YawControllerType = YawControllerType, PreCone = new Vertice() { X = PreCone.X, Y = PreCone.Y, Z = PreCone.Z }, pitchControllerParams = new PitchControllerParams() { PitchControlEndPitch = PitchControlEndPitch, PitchControlEndSpeed = PitchControlEndSpeed, PitchControlStartPitch = PitchControlStartPitch, PitchControlStartSpeed = PitchControlStartSpeed, RateLimitPitch = RateLimitPitch }, torqueControllerParams = new TorqueControllerParams() { CutInGenSpeed = CutInGenSpeed, CutInGenTorque = CutInGenTorque, KGen = KGen, RateLimitGenTorque = RateLimitGenTorque, RatedGenSpeed = RatedGenSpeed, RatedGenTorque = RatedGenTorque, Region2EndGenSpeed = Region2EndGenSpeed, Region2StartGenSpeed = Region2StartGenSpeed, TorqueControllerRelax = TorqueControllerRelax }, airfoilBlade = new List<AirfoilBlade>() }; foreach (var airFoil in airfoilBlade) { var x = new AirfoilBlade() { AirfoilName = airFoil.AirfoilName, Blade = new List<Vertice>() }; foreach( var blade in airFoil.Blade) { x.Blade.Add( new Vertice(blade.X, blade.Y, blade.Z)); } p.airfoilBlade.Add(x); } _fileHandler.FileName = PropName; _fileHandler.Write(_fileHandler.GetPath(path), p); }