{"id":94670,"date":"2023-07-25T08:00:00","date_gmt":"2023-07-25T15:00:00","guid":{"rendered":""},"modified":"2025-06-30T11:09:32","modified_gmt":"2025-06-30T18:09:32","slug":"connect-fluid-dynamics-machine-learning-and-virtual-reality-with-onnx-runtime","status":"publish","type":"post","link":"https:\/\/opensource.microsoft.com\/blog\/2023\/07\/25\/connect-fluid-dynamics-machine-learning-and-virtual-reality-with-onnx-runtime\/","title":{"rendered":"Connect fluid dynamics, machine learning, and virtual reality with ONNX Runtime"},"content":{"rendered":"\n<p><em>This blog is co-authored by Carlos Pe\u00f1a-Monferrer, Co-Founder, SIMZERO,&nbsp;and Carmen D\u00edaz-Mar\u00edn, Co-founder, SIMZERO<\/em><\/p>\n\n\n\n<p>In this guest blog post, the <a href=\"https:\/\/simzero.com\/\" target=\"_blank\" rel=\"noreferrer noopener\">SIMZERO<\/a> team shares how they used <a href=\"https:\/\/onnxruntime.ai\/\">ONNX Runtime<\/a> to unlock the promise of recent developments in science for solving real world problems like preventing hazards and optimizing energy use.&nbsp;<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p>The advent of machine learning (ML) is transforming every industry, from healthcare to finance, and from transportation to e-commerce. A promising use of machine learning is its combination with computational fluid dynamics (CFD) and other scientific applications. Different techniques, such as data-driven machine learning and physics-informed neural networks (PINNs), are transforming scientific simulations by bringing them into real-world, real-time processes. This development holds great promise for new discoveries, for optimizing the use of energy and materials, or for preventing potential hazards.&nbsp;<\/p>\n\n\n\n<p>A step further is the generation of virtual worlds or digital twins to form the core of the industrial metaverse. The key part is to be able to interact with the virtual world seamlessly as though it were the real world. In this way, we can test many hypotheses at little to no cost and decide on an optimal solution before implementing it in reality. By thinking outside the box, we can envision creating a virtual multiverse. Within this innovative space, one can propose, evaluate, and decide on multiple hypotheses. Real-world examples of this approach include planning new product configurations, operating a plant, designing heating or cooling systems, or responding to catastrophes.&nbsp;<\/p>\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2023\/07\/microsoftBlogCover1200x630-1024x538.webp\" alt=\"A virtual city environment with a parameterized inlet wind direction, created using Babylon.js and jsfluids.\" class=\"wp-image-94688 webp-format\" srcset=\"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2023\/07\/microsoftBlogCover1200x630-1024x538.png 1024w, https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2023\/07\/microsoftBlogCover1200x630-300x158.png 300w, https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2023\/07\/microsoftBlogCover1200x630-768x403.png 768w, https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2023\/07\/microsoftBlogCover1200x630-800x420.png 800w, https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2023\/07\/microsoftBlogCover1200x630-400x210.png 400w, https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2023\/07\/microsoftBlogCover1200x630-450x236.png 450w, https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2023\/07\/microsoftBlogCover1200x630-650x341.webp 650w, https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2023\/07\/microsoftBlogCover1200x630.webp 1200w\" data-orig-src=\"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2023\/07\/microsoftBlogCover1200x630-1024x538.png\" data-orig-srcset=\"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2023\/07\/microsoftBlogCover1200x630-1024x538.png 1024w, https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2023\/07\/microsoftBlogCover1200x630-300x158.png 300w, https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2023\/07\/microsoftBlogCover1200x630-768x403.png 768w, https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2023\/07\/microsoftBlogCover1200x630-800x420.png 800w, https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2023\/07\/microsoftBlogCover1200x630-400x210.png 400w, https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2023\/07\/microsoftBlogCover1200x630-450x236.png 450w, https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2023\/07\/microsoftBlogCover1200x630-650x341.png 650w, https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2023\/07\/microsoftBlogCover1200x630.png 1200w\"><figcaption class=\"wp-element-caption\"><em>Figure 1: A virtual city environment with a parameterized inlet wind direction, created using Babylon.js and jsfluids<\/em><\/figcaption><\/figure>\n\n\n\n<p>To bring CFD to virtual or augmented reality (VR\/AR), there are two main challenges that need to be addressed: the need for significant computational power to perform CFD simulations in real-time or near-real time, and the need for specialized software that can integrate both CFD and VR systems. Next, we will explain how we solved this at <a href=\"https:\/\/www.simzero.com\/\" target=\"_blank\" rel=\"noreferrer noopener\">SIMZERO<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"accelerating-cfd-simulations\">Accelerating CFD simulations<\/h2>\n\n\n\n<p>One approach to accelerate CFD simulations is to use mathematical methods such as reduced-order models or ML algorithms to learn and approximate the results of CFD simulations. Another approach is to incorporate physical laws into the network architecture. Although there is still a long way to go in terms of developing physical models for complex processes and learning from them, there are already many applications that can benefit from this progress. In this blog entry we will not focus on the methods themselves but on the deployment of the ML-CFD pre-trained models. To ensure efficient deployment of ML-CFD, we opted to use <a href=\"https:\/\/onnx.ai\/\" target=\"_blank\" rel=\"noreferrer noopener\">Open Neural Network Exchange<\/a> (ONNX) models, which allows for seamless interoperability between existing ML-CFD frameworks based on PyTorch, TensorFlow, Keras, and other frameworks. Another important factor in choosing ONNX was the capability for directly running inference in different programming languages thanks to <a href=\"https:\/\/onnxruntime.ai\/\" target=\"_blank\" rel=\"noreferrer noopener\">ONNX Runtime<\/a>. This allowed us to use ONNX Runtime to deploy the models to both backend and browser.<\/p>\n\n\n\n<p>To streamline the process, we have created a Python module `<a href=\"https:\/\/github.com\/simzero\/cfdonnx\" target=\"_blank\" rel=\"noreferrer noopener\">cfdonnx<\/a>` to bring together specific code to convert ML-CFD models to ONNX. The current module supports the U-Net model architecture but we plan to extend this to others in future releases. We have also created some <a href=\"http:\/\/github.com\/simzero\/openfoam-ml-rom\" target=\"_blank\" rel=\"noreferrer noopener\">reproducible examples<\/a> with the workflows that cover CFD runs to ONNX using <a href=\"https:\/\/github.com\/mdribeiro\/DeepCFD\" target=\"_blank\" rel=\"noreferrer noopener\">DeepCFD<\/a> as the ML package. The example below shows how to export a PyTorch model to ONNX by passing a PyTorch model. Parameters such as network architecture, input shape, filters, and kernel sizes are read from the PyTorch model in this case, but they can be also passed as arguments for convenience.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; first-line: 1; gutter: false; title: ; notranslate\" title=\"\">\npython3 -m cfdonnx --input model.pt --output model.onnx\n<\/pre><\/div>\n\n\n<h2 class=\"wp-block-heading\" id=\"ml-cfd-and-vr-interface\">ML-CFD and VR interface<\/h2>\n\n\n\n<p>A missing part was the interface between the ML-CFD and VR components. To address this, we developed <a href=\"https:\/\/github.com\/simzero\/jsfluids\" target=\"_blank\" rel=\"noreferrer noopener\">jsfluids<\/a>, a high-level JavaScript module for real-time CFD inference. This module handles reduced-order models created by <a href=\"https:\/\/mathlab.sissa.it\/ithaca-fv\" target=\"_blank\" rel=\"noreferrer noopener\">ITHACA-FV<\/a> and generic ML models. When using ML, we relied on ONNX Runtime to handle the ML aspects and provide a seamless interface between the virtual world and on-the-fly post-processing. Specifically, ONNX Runtime inference is performed to calculate the new fields that are passed to jsfluids for creating visualization components. The visualization components are compatible with <a href=\"https:\/\/www.babylonjs.com\/\" target=\"_blank\" rel=\"noreferrer noopener\">Babylon.js<\/a> which is the real-time 3D engine used. Further analysis can also be performed aside from the visualization components. These tasks were achieved by porting specific parts of <a href=\"https:\/\/vtk.org\/\" target=\"_blank\" rel=\"noreferrer noopener\">VTK<\/a>\/C++ to JavaScript.<\/p>\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2023\/07\/Simzero-Pic-2-1024x509.webp\" alt=\"High-level workflow for jsfluids.\" class=\"wp-image-94675 webp-format\" srcset=\"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2023\/07\/Simzero-Pic-2-1024x509.png 1024w, https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2023\/07\/Simzero-Pic-2-300x149.png 300w, https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2023\/07\/Simzero-Pic-2-768x381.png 768w, https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2023\/07\/Simzero-Pic-2-800x397.png 800w, https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2023\/07\/Simzero-Pic-2-400x199.png 400w, https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2023\/07\/Simzero-Pic-2-450x223.png 450w, https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2023\/07\/Simzero-Pic-2-650x323.webp 650w, https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2023\/07\/Simzero-Pic-2.webp 1347w\" data-orig-src=\"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2023\/07\/Simzero-Pic-2-1024x509.png\" data-orig-srcset=\"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2023\/07\/Simzero-Pic-2-1024x509.png 1024w, https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2023\/07\/Simzero-Pic-2-300x149.png 300w, https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2023\/07\/Simzero-Pic-2-768x381.png 768w, https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2023\/07\/Simzero-Pic-2-800x397.png 800w, https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2023\/07\/Simzero-Pic-2-400x199.png 400w, https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2023\/07\/Simzero-Pic-2-450x223.png 450w, https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2023\/07\/Simzero-Pic-2-650x323.png 650w, https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2023\/07\/Simzero-Pic-2.png 1347w\"><figcaption class=\"wp-element-caption\"><em>Figure 2: High-level workflow for jsfluids<\/em><\/figcaption><\/figure>\n\n\n\n<p>In the end, this approach enables the inference and analysis of fluid dynamics at the edge. By executing models directly on devices, we can reduce infrastructure costs, reduce latency, and improve privacy. In addition, we can bring the models to low consumption devices for connecting them with sensors and real world or to reduce power consumption on deployment.<\/p>\n\n\n\n<p>The following pseudocode shows how to use an ONNX model for inferring a velocity field, and creating and visualizing GLTF components on Babylon.js:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; gutter: false; title: ; notranslate\" title=\"\">\nconst model = jsfluids.ML;\n\n\/\/ Load the ONNX model from an URL or local data\nort.InferenceSession.create(onnxURL).then((onnx) => {\n\n  \/\/ Load the CFD mesh (unstructured grid) from an URL or local data\n  model.loadMesh(vtuURL).then(() => {\n    \/\/ Create a visualization component\n    \/\/ (e.g. outline surface, plane, streamlines, ...)\n    var gltf = model.setComponent({ type: \"surface\" });\n    var blob = new Blob([gltf]);\n    var url = URL.createObjectURL(blob);\n\n    BABYLON.SceneLoader.ImportMesh(\"\", url, \"\", scene, (meshes) => {\n      \/\/ Manipulate meshes (materials, positions, ...)\n      \/\/ Create the feeds input for your ONNX model\n      \/\/ var feeds = \u2026\n\n      onnx.run(feeds).then((results) => {\n        \/\/ Manipulate results to get the fields if needed\n        \/\/ var U = \u2026\n\n        \/\/ Set operations (if any) to be performed on the new field\n        \/\/ (e.g. vorticity or gradients)\n        model.setOperations({ operations: [\"vorticity\"] });\n\n        \/\/ Assign the field to the model and update\n        model.update({ field: \"U\", data: U });\n\n        \/\/ Render the component and assign the new field colors\n        var render = model.render({\n          field: \"U\",\n          \/\/ range: [0, 0.1]\n        });\n\n        meshes[1].setVerticesData(\n          BABYLON.VertexBuffer.ColorKind,\n          render.colors,\n          true\n        );\n\n        \/\/ Other jsfluids features as probing or integrating a field\n        var point = [0, 0, 0];\n        var probe = model.probe({ field: \"U\", point: point });\n        var integrate = model.integrate({\n          field: \"vorticity\",\n          target: \"grid\"\n        });\n      });\n    }, null, null, \".gltf\");\n<\/pre><\/div>\n\n\n<h2 class=\"wp-block-heading\" id=\"a-playground-for-cfd-cad-vr-and-ml\">A playground for CFD, CAD, VR, and ML <\/h2>\n\n\n\n<p>Getting started with these packages can be complicated, especially as the scope extends to several different domains. For this reason, we have created a live editor playground powered by ChatGPT at <a href=\"https:\/\/play.simzero.com\/\" target=\"_blank\" rel=\"noreferrer noopener\">SIMZERO Play<\/a> for experimenting, building, and testing. The playground includes other libraries such as babyplots and JSCAD for data visualization and CAD modeling, respectively. JSCAD provides a programmer\u2019s approach to designing 3D models. Although Babylon.js also allows for different geometry operations such as Constructive Solid Geometry (CSG), a user can choose to use JSCAD for convenience or for using models already developed by the community.<\/p>\n\n\n\n<p>At <a href=\"https:\/\/play.simzero.com\/\">SIMZERO Play<\/a> you can find different examples and templates for starting building models and worlds while choosing the combination of tools that best suits your needs. For instance, one can just use Babylon.js together with ONNX Runtime for building virtual worlds with artificial intelligence, and add the CFD and CAD features if required. Additional features will be added so users could easily build and use their models and applications outside the playground in both development and production.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"what-s-next-for-onnx-runtime\">What&#8217;s next for ONNX Runtime<\/h2>\n\n\n\n<p>With the deployment of pre-trained ML-CFD models using ONNX Runtime, we can infer fluid dynamics and seamlessly integrate them with virtual and augmented reality systems using open-source tools. Together with our newly developed JavaScript library jsfluids and the playground, you can easily access this technology to create better worlds.<\/p>\n\n\n\n<p>Get started today:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Try <a href=\"https:\/\/play.simzero.com\/\">SIMZERO Play<\/a> today.<\/li>\n\n\n\n<li>Deploy and accelerate your own machine learning models using <a href=\"\/onnxruntime.ai\">ONNX Runtime<\/a>.<\/li>\n<\/ul>\n\n\n\n<p><a id=\"_msocom_2\"><\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Using ONNX Runtime to unlock the promise of developments in science for solving real world problems.<\/p>\n","protected":false},"author":6220,"featured_media":95476,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"msxcm_post_with_no_image":false,"ep_exclude_from_search":false,"_classifai_error":"","_classifai_text_to_speech_error":"","footnotes":""},"post_tag":[1824],"content-type":[346],"topic":[2238,2240,2252],"programming-languages":[],"coauthors":[1972],"class_list":["post-94670","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","tag-onnx-runtime","content-type-news","topic-ai-machine-learning","topic-application-development","topic-tools","review-flag-1593580428-734","review-flag-1593580419-521","review-flag-1-1593580432-963","review-flag-2-1593580437-411","review-flag-artif-1680214273-578","review-flag-integ-1593580288-449","review-flag-machi-1680214156-53","review-flag-ml-1680214110-748","review-flag-new-1593580248-669"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.2 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Connect fluid dynamics, machine learning, and virtual reality with ONNX Runtime | Microsoft Open Source Blog<\/title>\n<meta name=\"description\" content=\"Optimize development and unlock new discoveries with ONNX Runtime. Learn more.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/opensource.microsoft.com\/blog\/2023\/07\/25\/connect-fluid-dynamics-machine-learning-and-virtual-reality-with-onnx-runtime\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Connect fluid dynamics, machine learning, and virtual reality with ONNX Runtime | Microsoft Open Source Blog\" \/>\n<meta property=\"og:description\" content=\"Optimize development and unlock new discoveries with ONNX Runtime. Learn more.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/opensource.microsoft.com\/blog\/2023\/07\/25\/connect-fluid-dynamics-machine-learning-and-virtual-reality-with-onnx-runtime\/\" \/>\n<meta property=\"og:site_name\" content=\"Microsoft Open Source Blog\" \/>\n<meta property=\"article:published_time\" content=\"2023-07-25T15:00:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-06-30T18:09:32+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2023\/07\/Simzero-Pic-2.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1347\" \/>\n\t<meta property=\"og:image:height\" content=\"669\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Cassie Breviu\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2023\/07\/Simzero-Pic-2.png\" \/>\n<meta name=\"twitter:creator\" content=\"@OpenAtMicrosoft\" \/>\n<meta name=\"twitter:site\" content=\"@OpenAtMicrosoft\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Cassie Breviu\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 min read\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/2023\/07\/25\/connect-fluid-dynamics-machine-learning-and-virtual-reality-with-onnx-runtime\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/2023\/07\/25\/connect-fluid-dynamics-machine-learning-and-virtual-reality-with-onnx-runtime\/\"},\"author\":[{\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/author\/cassie-breviu\/\",\"@type\":\"Person\",\"@name\":\"Cassie Breviu\"}],\"headline\":\"Connect fluid dynamics, machine learning, and virtual reality with ONNX Runtime\",\"datePublished\":\"2023-07-25T15:00:00+00:00\",\"dateModified\":\"2025-06-30T18:09:32+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/2023\/07\/25\/connect-fluid-dynamics-machine-learning-and-virtual-reality-with-onnx-runtime\/\"},\"wordCount\":1082,\"publisher\":{\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/2023\/07\/25\/connect-fluid-dynamics-machine-learning-and-virtual-reality-with-onnx-runtime\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2024\/06\/Hybrid-meeting-800x533-1.webp\",\"keywords\":[\"ONNX Runtime\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/2023\/07\/25\/connect-fluid-dynamics-machine-learning-and-virtual-reality-with-onnx-runtime\/\",\"url\":\"https:\/\/opensource.microsoft.com\/blog\/2023\/07\/25\/connect-fluid-dynamics-machine-learning-and-virtual-reality-with-onnx-runtime\/\",\"name\":\"Connect fluid dynamics, machine learning, and virtual reality with ONNX Runtime | Microsoft Open Source Blog\",\"isPartOf\":{\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/2023\/07\/25\/connect-fluid-dynamics-machine-learning-and-virtual-reality-with-onnx-runtime\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/2023\/07\/25\/connect-fluid-dynamics-machine-learning-and-virtual-reality-with-onnx-runtime\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2024\/06\/Hybrid-meeting-800x533-1.webp\",\"datePublished\":\"2023-07-25T15:00:00+00:00\",\"dateModified\":\"2025-06-30T18:09:32+00:00\",\"description\":\"Optimize development and unlock new discoveries with ONNX Runtime. Learn more.\",\"breadcrumb\":{\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/2023\/07\/25\/connect-fluid-dynamics-machine-learning-and-virtual-reality-with-onnx-runtime\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/opensource.microsoft.com\/blog\/2023\/07\/25\/connect-fluid-dynamics-machine-learning-and-virtual-reality-with-onnx-runtime\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/2023\/07\/25\/connect-fluid-dynamics-machine-learning-and-virtual-reality-with-onnx-runtime\/#primaryimage\",\"url\":\"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2024\/06\/Hybrid-meeting-800x533-1.webp\",\"contentUrl\":\"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2024\/06\/Hybrid-meeting-800x533-1.webp\",\"width\":1170,\"height\":640},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/2023\/07\/25\/connect-fluid-dynamics-machine-learning-and-virtual-reality-with-onnx-runtime\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/opensource.microsoft.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Connect fluid dynamics, machine learning, and virtual reality with ONNX Runtime\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/#website\",\"url\":\"https:\/\/opensource.microsoft.com\/blog\/\",\"name\":\"Microsoft Open Source Blog\",\"description\":\"Open dialogue about openness at Microsoft \u2013 open source, standards, interoperability\",\"publisher\":{\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/opensource.microsoft.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/#organization\",\"name\":\"Microsoft Open Source Blog\",\"url\":\"https:\/\/opensource.microsoft.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2019\/08\/Microsoft-Logo.png\",\"contentUrl\":\"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2019\/08\/Microsoft-Logo.png\",\"width\":259,\"height\":194,\"caption\":\"Microsoft Open Source Blog\"},\"image\":{\"@id\":\"https:\/\/opensource.microsoft.com\/blog\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/x.com\/OpenAtMicrosoft\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Connect fluid dynamics, machine learning, and virtual reality with ONNX Runtime | Microsoft Open Source Blog","description":"Optimize development and unlock new discoveries with ONNX Runtime. Learn more.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/opensource.microsoft.com\/blog\/2023\/07\/25\/connect-fluid-dynamics-machine-learning-and-virtual-reality-with-onnx-runtime\/","og_locale":"en_US","og_type":"article","og_title":"Connect fluid dynamics, machine learning, and virtual reality with ONNX Runtime | Microsoft Open Source Blog","og_description":"Optimize development and unlock new discoveries with ONNX Runtime. Learn more.","og_url":"https:\/\/opensource.microsoft.com\/blog\/2023\/07\/25\/connect-fluid-dynamics-machine-learning-and-virtual-reality-with-onnx-runtime\/","og_site_name":"Microsoft Open Source Blog","article_published_time":"2023-07-25T15:00:00+00:00","article_modified_time":"2025-06-30T18:09:32+00:00","og_image":[{"width":1347,"height":669,"url":"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2023\/07\/Simzero-Pic-2.png","type":"image\/png"}],"author":"Cassie Breviu","twitter_card":"summary_large_image","twitter_image":"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2023\/07\/Simzero-Pic-2.png","twitter_creator":"@OpenAtMicrosoft","twitter_site":"@OpenAtMicrosoft","twitter_misc":{"Written by":"Cassie Breviu","Est. reading time":"5 min read"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/opensource.microsoft.com\/blog\/2023\/07\/25\/connect-fluid-dynamics-machine-learning-and-virtual-reality-with-onnx-runtime\/#article","isPartOf":{"@id":"https:\/\/opensource.microsoft.com\/blog\/2023\/07\/25\/connect-fluid-dynamics-machine-learning-and-virtual-reality-with-onnx-runtime\/"},"author":[{"@id":"https:\/\/opensource.microsoft.com\/blog\/author\/cassie-breviu\/","@type":"Person","@name":"Cassie Breviu"}],"headline":"Connect fluid dynamics, machine learning, and virtual reality with ONNX Runtime","datePublished":"2023-07-25T15:00:00+00:00","dateModified":"2025-06-30T18:09:32+00:00","mainEntityOfPage":{"@id":"https:\/\/opensource.microsoft.com\/blog\/2023\/07\/25\/connect-fluid-dynamics-machine-learning-and-virtual-reality-with-onnx-runtime\/"},"wordCount":1082,"publisher":{"@id":"https:\/\/opensource.microsoft.com\/blog\/#organization"},"image":{"@id":"https:\/\/opensource.microsoft.com\/blog\/2023\/07\/25\/connect-fluid-dynamics-machine-learning-and-virtual-reality-with-onnx-runtime\/#primaryimage"},"thumbnailUrl":"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2024\/06\/Hybrid-meeting-800x533-1.webp","keywords":["ONNX Runtime"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/opensource.microsoft.com\/blog\/2023\/07\/25\/connect-fluid-dynamics-machine-learning-and-virtual-reality-with-onnx-runtime\/","url":"https:\/\/opensource.microsoft.com\/blog\/2023\/07\/25\/connect-fluid-dynamics-machine-learning-and-virtual-reality-with-onnx-runtime\/","name":"Connect fluid dynamics, machine learning, and virtual reality with ONNX Runtime | Microsoft Open Source Blog","isPartOf":{"@id":"https:\/\/opensource.microsoft.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/opensource.microsoft.com\/blog\/2023\/07\/25\/connect-fluid-dynamics-machine-learning-and-virtual-reality-with-onnx-runtime\/#primaryimage"},"image":{"@id":"https:\/\/opensource.microsoft.com\/blog\/2023\/07\/25\/connect-fluid-dynamics-machine-learning-and-virtual-reality-with-onnx-runtime\/#primaryimage"},"thumbnailUrl":"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2024\/06\/Hybrid-meeting-800x533-1.webp","datePublished":"2023-07-25T15:00:00+00:00","dateModified":"2025-06-30T18:09:32+00:00","description":"Optimize development and unlock new discoveries with ONNX Runtime. Learn more.","breadcrumb":{"@id":"https:\/\/opensource.microsoft.com\/blog\/2023\/07\/25\/connect-fluid-dynamics-machine-learning-and-virtual-reality-with-onnx-runtime\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/opensource.microsoft.com\/blog\/2023\/07\/25\/connect-fluid-dynamics-machine-learning-and-virtual-reality-with-onnx-runtime\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/opensource.microsoft.com\/blog\/2023\/07\/25\/connect-fluid-dynamics-machine-learning-and-virtual-reality-with-onnx-runtime\/#primaryimage","url":"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2024\/06\/Hybrid-meeting-800x533-1.webp","contentUrl":"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2024\/06\/Hybrid-meeting-800x533-1.webp","width":1170,"height":640},{"@type":"BreadcrumbList","@id":"https:\/\/opensource.microsoft.com\/blog\/2023\/07\/25\/connect-fluid-dynamics-machine-learning-and-virtual-reality-with-onnx-runtime\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/opensource.microsoft.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Connect fluid dynamics, machine learning, and virtual reality with ONNX Runtime"}]},{"@type":"WebSite","@id":"https:\/\/opensource.microsoft.com\/blog\/#website","url":"https:\/\/opensource.microsoft.com\/blog\/","name":"Microsoft Open Source Blog","description":"Open dialogue about openness at Microsoft \u2013 open source, standards, interoperability","publisher":{"@id":"https:\/\/opensource.microsoft.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/opensource.microsoft.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/opensource.microsoft.com\/blog\/#organization","name":"Microsoft Open Source Blog","url":"https:\/\/opensource.microsoft.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/opensource.microsoft.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2019\/08\/Microsoft-Logo.png","contentUrl":"https:\/\/opensource.microsoft.com\/blog\/wp-content\/uploads\/2019\/08\/Microsoft-Logo.png","width":259,"height":194,"caption":"Microsoft Open Source Blog"},"image":{"@id":"https:\/\/opensource.microsoft.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/x.com\/OpenAtMicrosoft"]}]}},"msxcm_display_generated_audio":false,"msxcm_animated_featured_image":null,"distributor_meta":false,"distributor_terms":false,"distributor_media":false,"distributor_original_site_name":"Microsoft Open Source Blog","distributor_original_site_url":"https:\/\/opensource.microsoft.com\/blog","push-errors":false,"_links":{"self":[{"href":"https:\/\/opensource.microsoft.com\/blog\/wp-json\/wp\/v2\/posts\/94670","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/opensource.microsoft.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/opensource.microsoft.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/opensource.microsoft.com\/blog\/wp-json\/wp\/v2\/users\/6220"}],"replies":[{"embeddable":true,"href":"https:\/\/opensource.microsoft.com\/blog\/wp-json\/wp\/v2\/comments?post=94670"}],"version-history":[{"count":2,"href":"https:\/\/opensource.microsoft.com\/blog\/wp-json\/wp\/v2\/posts\/94670\/revisions"}],"predecessor-version":[{"id":97929,"href":"https:\/\/opensource.microsoft.com\/blog\/wp-json\/wp\/v2\/posts\/94670\/revisions\/97929"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/opensource.microsoft.com\/blog\/wp-json\/wp\/v2\/media\/95476"}],"wp:attachment":[{"href":"https:\/\/opensource.microsoft.com\/blog\/wp-json\/wp\/v2\/media?parent=94670"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/opensource.microsoft.com\/blog\/wp-json\/wp\/v2\/post_tag?post=94670"},{"taxonomy":"content-type","embeddable":true,"href":"https:\/\/opensource.microsoft.com\/blog\/wp-json\/wp\/v2\/content-type?post=94670"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/opensource.microsoft.com\/blog\/wp-json\/wp\/v2\/topic?post=94670"},{"taxonomy":"programming-languages","embeddable":true,"href":"https:\/\/opensource.microsoft.com\/blog\/wp-json\/wp\/v2\/programming-languages?post=94670"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/opensource.microsoft.com\/blog\/wp-json\/wp\/v2\/coauthors?post=94670"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}