Created
July 19, 2017 13:35
-
-
Save dmsurti/2dfdb41c92ca99fc82709f89873a5fd9 to your computer and use it in GitHub Desktop.
Using python-jsonschema-objects to generate a class for blockMeshDict
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import json | |
import python_jsonschema_objects as pjs | |
schema = { | |
"title": "Example Schema", | |
"type" : "object", | |
"properties": { | |
"blocks": { | |
"id": "/properties/blocks", | |
"properties": { | |
"cell_ratios": { | |
"id": "/properties/blocks/properties/cell_ratios", | |
"items": { | |
"id": "/properties/blocks/properties/cell_ratios/items", | |
"type": "integer" | |
}, | |
"type": "array" | |
}, | |
"edge_grading": { | |
"id": "/properties/blocks/properties/edge_grading", | |
"type": "boolean" | |
}, | |
"multi_grading": { | |
"id": "/properties/blocks/properties/multi_grading", | |
"type": "boolean" | |
}, | |
"multi_grading_ratios": { | |
"id": "/properties/blocks/properties/multi_grading_ratios", | |
"properties": { | |
"x": { | |
"id": "/properties/blocks/properties/multi_grading_ratios/properties/x", | |
"items": { | |
"id": "/properties/blocks/properties/multi_grading_ratios/properties/x/items", | |
"items": { | |
"id": "/properties/blocks/properties/multi_grading_ratios/properties/x/items/items", | |
"type": "integer" | |
}, | |
"type": "array" | |
}, | |
"type": "array" | |
}, | |
"y": { | |
"id": "/properties/blocks/properties/multi_grading_ratios/properties/y", | |
"items": { | |
"id": "/properties/blocks/properties/multi_grading_ratios/properties/y/items", | |
"items": { | |
"id": "/properties/blocks/properties/multi_grading_ratios/properties/y/items/items", | |
"type": "integer" | |
}, | |
"type": "array" | |
}, | |
"type": "array" | |
}, | |
"z": { | |
"id": "/properties/blocks/properties/multi_grading_ratios/properties/z", | |
"items": { | |
"id": "/properties/blocks/properties/multi_grading_ratios/properties/z/items", | |
"items": { | |
"id": "/properties/blocks/properties/multi_grading_ratios/properties/z/items/items", | |
"type": "integer" | |
}, | |
"type": "array" | |
}, | |
"type": "array" | |
} | |
}, | |
"type": "object" | |
}, | |
"num_cells": { | |
"id": "/properties/blocks/properties/num_cells", | |
"items": { | |
"id": "/properties/blocks/properties/num_cells/items", | |
"type": "integer" | |
}, | |
"type": "array" | |
}, | |
"simple_grading": { | |
"id": "/properties/blocks/properties/simple_grading", | |
"type": "boolean" | |
}, | |
"vertex_nums": { | |
"id": "/properties/blocks/properties/vertex_nums", | |
"items": { | |
"id": "/properties/blocks/properties/vertex_nums/items", | |
"type": "integer" | |
}, | |
"type": "array" | |
} | |
}, | |
"type": "object" | |
}, | |
"boundary": { | |
"id": "/properties/boundary", | |
"items": { | |
"id": "/properties/boundary/items", | |
"properties": { | |
"cyclic": { | |
"id": "/properties/boundary/items/properties/cyclic", | |
"type": "boolean" | |
}, | |
"empty": { | |
"id": "/properties/boundary/items/properties/empty", | |
"type": "boolean" | |
}, | |
"faces": { | |
"id": "/properties/boundary/items/properties/faces", | |
"items": { | |
"id": "/properties/boundary/items/properties/faces/items", | |
"items": { | |
"id": "/properties/boundary/items/properties/faces/items/items", | |
"type": "integer" | |
}, | |
"type": "array" | |
}, | |
"type": "array" | |
}, | |
"name": { | |
"id": "/properties/boundary/items/properties/name", | |
"type": "string" | |
}, | |
"neighbor_patch": { | |
"id": "/properties/boundary/items/properties/neighbor_patch", | |
"type": "string" | |
}, | |
"patch": { | |
"id": "/properties/boundary/items/properties/patch", | |
"type": "boolean" | |
}, | |
"wall": { | |
"id": "/properties/boundary/items/properties/wall", | |
"type": "boolean" | |
} | |
}, | |
"type": "object" | |
}, | |
"type": "array" | |
}, | |
"class": { | |
"id": "/properties/class", | |
"type": "string" | |
}, | |
"convertToMeters": { | |
"id": "/properties/convertToMeters", | |
"type": "number" | |
}, | |
"edges": { | |
"id": "/properties/edges", | |
"properties": { | |
"BSpline": { | |
"id": "/properties/edges/properties/BSpline", | |
"type": "boolean" | |
}, | |
"arc": { | |
"id": "/properties/edges/properties/arc", | |
"type": "boolean" | |
}, | |
"end": { | |
"id": "/properties/edges/properties/end", | |
"type": "integer" | |
}, | |
"interp_points": { | |
"id": "/properties/edges/properties/interp_points", | |
"items": { | |
"id": "/properties/edges/properties/interp_points/items", | |
"type": "number" | |
}, | |
"type": "array" | |
}, | |
"line": { | |
"id": "/properties/edges/properties/line", | |
"type": "boolean" | |
}, | |
"polyLine": { | |
"id": "/properties/edges/properties/polyLine", | |
"type": "boolean" | |
}, | |
"spline": { | |
"id": "/properties/edges/properties/spline", | |
"type": "boolean" | |
}, | |
"start": { | |
"id": "/properties/edges/properties/start", | |
"type": "integer" | |
} | |
}, | |
"type": "object" | |
}, | |
"format": { | |
"id": "/properties/format", | |
"type": "string" | |
}, | |
"mergePatchPairs": { | |
"id": "/properties/mergePatchPairs", | |
"items": { | |
"id": "/properties/mergePatchPairs/items", | |
"items": { | |
"id": "/properties/mergePatchPairs/items/items", | |
"type": "string" | |
}, | |
"type": "array" | |
}, | |
"type": "array" | |
}, | |
"object": { | |
"id": "/properties/object", | |
"type": "string" | |
}, | |
"version": { | |
"id": "/properties/version", | |
"type": "string" | |
}, | |
"vertices": { | |
"id": "/properties/vertices", | |
"items": { | |
"id": "/properties/vertices/items", | |
"items": { | |
"id": "/properties/vertices/items/items", | |
"type": "integer" | |
}, | |
"type": "array" | |
}, | |
"type": "array" | |
} | |
}, | |
"type": "object" | |
} | |
builder = pjs.ObjectBuilder(schema) | |
ns = builder.build_classes() | |
BMD = ns.ExampleSchema | |
bmd = BMD() | |
bmd.version = "2.0" | |
print(bmd.version, bmd.vertices) | |
bmd.vertices = [] | |
bmd.vertices.append([1, 2, 3]) | |
bmd.vertices.append([4, 5, 6]) | |
for v in bmd.vertices: | |
print(v, type(v)) | |
j = json.loads(bmd.serialize()) | |
print(j) | |
l = [v for v in j["vertices"]] | |
print(l) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Output for a sample run: