public override object Read(string path) { var rawData = new BlockMeshDictData(); string txt; using (var reader = new StreamReader(path)) { txt = reader.ReadToEnd(); } var grammar = new OpenFoamGrammar(); var parser = new Parser(grammar); var tree = parser.Parse(txt); foreach (ParseTreeNode rootEntryNode in tree.Root.FindDictEntries(null)) { var identifier = rootEntryNode.GetEntryIdentifier(); switch (identifier) { case "convertToMeters": rawData.convertToMeters = rootEntryNode.GetBasicValDecimal(); break; case "vertices": var vertices = rootEntryNode.GetDictArrayBody().GetVectorsArray(); rawData.vertices.AddRange(vertices); break; case "blocks": var blocks = rootEntryNode.GetDictArrayBody().GetArray(n => n); rawData.MeshBlocks.vertexNumbers.AddRange(blocks[1].ChildNodes[1].GetArrayOfInt32()); rawData.MeshBlocks.numberOfCells.AddRange(blocks[2].ChildNodes[1].GetArrayOfInt32()); rawData.MeshBlocks.gradingNumbers.AddRange(blocks[4].ChildNodes[1].GetArrayOfInt32()); var gradingText = blocks[3].Token.Text; rawData.MeshBlocks.grading = (Grading)Enum.Parse(typeof(Grading), gradingText); break; case "boundary": var boundaries = rootEntryNode.GetDictArrayBody().GetArray(ParseBoundary); rawData.boundaries.AddRange(boundaries); break; } } return(rawData); }
public override object Read(string path) { var rawData = new BlockMeshDictData(); string txt; using (var reader = new StreamReader(path)) { txt = reader.ReadToEnd(); } var grammar = new OpenFoamGrammar(); var parser = new Parser(grammar); var tree = parser.Parse(txt); foreach (ParseTreeNode rootEntryNode in tree.Root.FindDictEntries(null)) { var identifier = rootEntryNode.GetEntryIdentifier(); switch (identifier) { case "convertToMeters": rawData.convertToMeters = rootEntryNode.GetBasicValDecimal(); break; case "vertices": var vertices = rootEntryNode.GetDictArrayBody().GetVectorsArray(); rawData.vertices.AddRange(vertices); break; case "blocks": var blocks = rootEntryNode.GetDictArrayBody().GetArray(n => n); rawData.MeshBlocks.vertexNumbers.AddRange(blocks[1].ChildNodes[1].GetArrayOfInt32()); rawData.MeshBlocks.numberOfCells.AddRange(blocks[2].ChildNodes[1].GetArrayOfInt32()); rawData.MeshBlocks.gradingNumbers.AddRange(blocks[4].ChildNodes[1].GetArrayOfInt32()); var gradingText = blocks[3].Token.Text; rawData.MeshBlocks.grading = (Grading)Enum.Parse(typeof(Grading), gradingText); break; case "boundary": var boundaries = rootEntryNode.GetDictArrayBody().GetArray(ParseBoundary); rawData.boundaries.AddRange(boundaries); break; } } return rawData; }
private static void InitBlockMeshDict(BlockMeshDictData bm) { bm.convertToMeters = 1; bm.vertices.AddRange(new[] { new Vertice(-500, -500, 0), new Vertice(6000, -500, 0), new Vertice(6000, 6000, 0), new Vertice(-500, 6000, 0), new Vertice(-500, -500, 1000), new Vertice(6000, -500, 1000), new Vertice(6000, 6000, 1000), new Vertice(-500, 6000, 1000), }); bm.MeshBlocks.vertexNumbers.AddRange(new[] { 0, 1, 2, 3, 4, 5, 6, 7 }); bm.MeshBlocks.numberOfCells.AddRange(new[] { 100, 100, 30 }); bm.MeshBlocks.grading = Grading.simpleGrading; bm.MeshBlocks.gradingNumbers.AddRange(new[] { 1, 1, 1 }); }
public AblGeometryData() { BlockMesh = new BlockMeshDictData(); TopoSet = new TopoSetDictData(); }