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;
        }
Beispiel #3
0
        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();
 }