{"id":13172,"date":"2021-07-06T10:55:16","date_gmt":"2021-07-06T01:55:16","guid":{"rendered":"https:\/\/ocse2.com\/?p=13172"},"modified":"2021-08-16T11:09:40","modified_gmt":"2021-08-16T02:09:40","slug":"dexcs%e3%83%a9%e3%83%b3%e3%83%81%e3%83%a3%e3%83%bc-v2-5-%e8%a3%bd%e4%bd%9c%e3%83%a1%e3%83%a2-3-5","status":"publish","type":"post","link":"https:\/\/ocse2.com\/?p=13172","title":{"rendered":"DEXCS\u30e9\u30f3\u30c1\u30e3\u30fc v2.5 \u88fd\u4f5c\u30e1\u30e2 \/ 3.5"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">3.5 \u30e1\u30c3\u30b7\u30e5\u4f5c\u6210\u65b9\u6cd5\uff08\u7d30\u5206\u5316\u6307\u5b9a\u7121\u3057\uff09\u306e\u5909\u66f4\uff08DEXCS\u5316\uff09 1<\/h2>\n\n\n<p><!-- admax --><br \/>\n<script src=\"\/\/adm.shinobi.jp\/s\/f441a8efe75e3127b36ac8c4fda493f7\"><\/script><br \/>\n<!-- admax --><\/p>\n\n\n\n<p>\u73fe\u884c\u306e CfdOF \u3067\u306f\u3001\u30e1\u30c3\u30b7\u30e5\u9818\u57df\uff08\u9589\u3058\u305f\u9818\u57df\uff09\u3092\u5b9a\u7fa9\u3057\u305f Part \u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092\u9078\u629e\u3057\u306a\u3044\u3068\u3001\u30e1\u30c3\u30b7\u30e5<br>\u4f5c\u6210\u753b\u9762\u3092\u8868\u793a\u3059\u308b\u3053\u3068\u304c\u51fa\u6765\u306a\u3044\uff08\u30dc\u30bf\u30f3\u304c\u6709\u52b9\u306b\u306a\u3089\u306a\u3044\uff09\u304c\u3001 DEXCS \u3067\u306f\u3001 Patr \u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u306e\u7d44\u307f<br>\u5408\u308f\u305b\u3068\u3057\u3066\u30e1\u30c3\u30b7\u30e5\u9818\u57df\u3092\u5b9a\u7fa9\u3059\u308b\u306e\u3067\u3001\u4f55\u3082\u9078\u629e\u3057\u306a\u304f\u3068\u3082\u3053\u306e\u753b\u9762\u304c\u8868\u793a\u3067\u304d\u308b\u3088\u3046\u6539\u5909\u3057\u305f\u3044\u3002<br>\u3057\u304b\u3057\uff08\u4eca\u306e\u6240\u3001\u305d\u306e\u65b9\u6cd5\u304c\u308f\u304b\u3089\u306a\u3044\u306e\u3067\uff09\u3001\u5f53\u9762\u306f\u4efb\u610f\u306e\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092\u9078\u629e\u3057\u3066\u30e1\u30c3\u30b7\u30e5\u4f5c\u6210\u753b\u9762\u3092<\/p>\n\n\n\n<p>\u8868\u793a\u3067\u304d\u308b\u3088\u3046\u306b\u3057\u3066\u3001\u3053\u306e\u753b\u9762\u3068\u305d\u306e\u6a5f\u80fd\u3092\u6539\u5909\u3057\u3066\u3044\u304f\u4e8b\u3068\u3059\u308b\u3002\u307e\u305f\u305d\u306e\u969b\u306b\u3001\u30e1\u30c3\u30b7\u30e5\u4f5c\u6210\u306f\u57fa\u672c\u7684<br>\u306b\u73fe\u884c\u306e DEXCS \u65b9\u5f0f\u3092\u63a1\u7528\u3059\u308b\u3082\u306e\u3068\u3057\u3066\u8003\u3048\u308b\u3002\u3055\u3089\u306b\u3001\u6b21\u7bc0\u4ee5\u964d\u306e\u30e1\u30c3\u30b7\u30e5\u7d30\u5206\u5316\u30d1\u30e9\u30e1\u30bf\u3092\u3044\u304b\u306b<br>\u7d44\u307f\u8fbc\u3080\u304b\u3068\u3044\u3046\u8ab2\u984c\u3082\u3042\u308b\u306e\u3067\u3001\u3053\u3053\u3067\u306f\u307e\u305a\u7d30\u5206\u5316\u30d1\u30e9\u30e1\u30bf\u3092\u5fc5\u8981\u3068\u305b\u305a\u3001\u57fa\u672c\u30d1\u30e9\u30e1\u30bf\u3060\u3051\u3067\u30e1\u30c3\u30b7\u30e5<br>\u4f5c\u6210\u3067\u304d\u308b\u30b1\u30fc\u30b9\uff08backstepSimple\uff09\u3092\u5bfe\u8c61\u306b\u8003\u3048\u308b\u3053\u3068\u3068\u3057\u305f\u3002\u304b\u3088\u3046\u306b\u8003\u3048\u308b\u306e\u3067\u3042\u308c\u3070\u3001\u56f3 12 \u306b\u793a\u3059\u3088\u3046\u306b\u3001<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img fetchpriority=\"high\" decoding=\"async\" src=\"https:\/\/ocse2.com\/wp-content\/uploads\/2021\/07\/fig13.png\" alt=\"\" class=\"wp-image-13183\" width=\"779\" height=\"410\"\/><figcaption>\u56f3 12\u3000\u30e1\u30c3\u30b7\u30e5\u4f5c\u6210\u753b\u9762\u306e\u6539\u5909 1<\/figcaption><\/figure>\n\n\n\n<p>\u73fe\u884c DEXCS \u30de\u30af\u30ed\u306e<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>ExportDict \u30dc\u30bf\u30f3<\/li><li>MakeMesh \u30dc\u30bf\u30f3<\/li><li>ViewMesh \u30dc\u30bf\u30f3<\/li><li>maxCellSize \u306e\u6570\u5024\u30ab\u30e9\u30e0<\/li><\/ul>\n\n\n\n<p>\u3092\u30af\u30ea\u30c3\u30af\u3057\u305f\u969b\u306b\u547c\u3073\u51fa\u3055\u308c\u308b\u95a2\u6570\u3092\u3001 CfdOF \u306e\u30e1\u30c3\u30b7\u30e5\u4f5c\u6210\u753b\u9762\u4e0a<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Write mesh case \u30dc\u30bf\u30f3<\/li><li>Run mesher \u30dc\u30bf\u30f3<\/li><li>Paraview \u30dc\u30bf\u30f3<\/li><li>Base element size \u306e\u6570\u5024\u30ab\u30e9\u30e0<\/li><\/ul>\n\n\n\n<p>\u304b\u3089\u547c\u3073\u51fa\u3059\u3088\u3046\u306b\u3057\u3066\u6a5f\u80fd\u3059\u308b\u3088\u3046\u306b\u6539\u5909\u3059\u308b\u4e8b\u3092\u5f53\u9762\u306e\u76ee\u6a19\u3068\u3057\u305f\u3002\u7d20\u4eba\u30d7\u30ed\u30b0\u30e9\u30de\u306e\u76ee\u8ad6\u898b\u901a\u308a\u306b\u52d5\u3044\u3066\u304f\u308c\u308b\u3088\u3046\u306b\u306a\u3063\u3066\u304f\u308c\u308c\u3070\u30cf\u30c3\u30ad\u30f3\u30b0\u4e0e\u592a\u8a71\u3082\u73fe\u5b9f\u7684\u306a\u3082\u306e\u306b\u306a\u308b\u3002\u9006\u306b\u3053\u308c\u304c\u51fa\u6765\u306a\u3044\u4e8b\u306b\u306f\u3001\u4f5c\u6210\u72b6\u6cc1\uff08\u5b9f\u884c\u30ed\u30b0\uff09\u3092 Status \u30ab\u30e9\u30e0\u306b\u8868\u793a\u3055\u305b\u3001\u4e2d\u9014\u505c\u6b62\u30dc\u30bf\u30f3\u3092\u6a5f\u80fd\u3059\u308b\u3088\u3046\u306b\u3067\u304d\u308b\u3088\u3046\u306b\u3059\u308b\u4e8b\u3084\u3001 cfMesh\u306e\u57fa\u672c\u30d1\u30e9\u30e1\u30bf\uff08 optimize Layer \u3084 keepCellsInter\u2026 \uff09\u3092\u8ffd\u52a0\u3059\u308b\u4e8b\u306a\u3069\u8003\u3048\u3089\u308c\u308b\u304c\u3001\u5148\u3078\u9032\u3080\u306e\u306f\u5c1a\u65e9\u3067\u3042\u308b\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">(1) dexcs CFD Mesh \u753b\u9762<\/h3>\n\n\n\n<p>_TaskPanelCfdMesh.py \u3092\u30b3\u30d4\u30fc\u3057\u3066\u3001_ dexcsTaskPanelCfdMesh.py \u3068\u540d\u524d\u3092\u5909\u66f4\u3001\u3053\u306e\u4e2d\u8eab\u3092\u6539\u5909\u3057\u3066<br>\u3044\u304f\u3053\u3068\u3068\u3057\u305f\u3002<br>\u307e\u305f\u3001_TaskPanelCfdMesh.py \u3092\u547c\u3073\u51fa\u3057\u3066\u3044\u308b\u306e\u306f\u3001 CfdMesh.py \u304b\u3089\u3067\u3001\u3053\u306e\u90e8\u5206\u3092\u3001<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>163: import <span class=\"has-inline-color has-vivid-red-color\">_dexcsTaskPanelCfdMesh<\/span>\n164: taskd = <span class=\"has-inline-color has-vivid-red-color\">_dexcsTaskPanelCfdMesh<\/span>._TaskPanelCfdMesh(self.Object)<\/code><\/pre>\n\n\n\n<p>\u3068\u5909\u66f4\u3059\u308b\u3068\u5171\u306b\u3001\u30e1\u30c3\u30b7\u30e5\u4f5c\u6210\u30b3\u30f3\u30c6\u30ca\u306b\u304a\u3044\u3066\u30e1\u30c3\u30b7\u30e5\u4f5c\u6210\u7528\u306e CaseName \u304c\u30c7\u30d5\u30a9\u30eb\u30c8\u3067 meshCase<br>\u3068\u3055\u308c\u3066\u3044\u308b\u306e\u3067\u3001\u3053\u308c\u3092\u3001<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>94: addObjectProperty(obj, \u2019CaseName\u2019, \"<span class=\"has-inline-color has-vivid-red-color\">.\/<\/span>\", \"App::PropertyString\", \"\",\n95: \"Name of directory in which the mesh is created\")<\/code><\/pre>\n\n\n\n<p>\u81ea\u8eab\u306e\uff08 FreeCAD \u30e2\u30c7\u30eb\u306e\u5b58\u5728\u3059\u308b\uff09\u30c7\u30a3\u30ec\u30af\u30c8\u30ea (.) \u306b\u5909\u66f4\u3059\u308b\u3002<br>\u3055\u3089\u306b\u3001\u30bf\u30b9\u30af\u753b\u9762\u306e GUI \u30c7\u30b6\u30a4\u30f3\u306f\u3044\u305a\u308c\u5909\u66f4\u3057\u305f\u3044\u3002\u3053\u308c\u306f TaskPanelCfdMesh.ui \u306b\u3066\u5b9a\u7fa9\u3055\u308c\u308b<br>\u306e\u3067\u3001\u3053\u308c\u3082\u30b3\u30d4\u30fc\u3057\u3066\u540d\u524d\u3092\u5909\u66f4\uff08 dexcsTaskPanelCfdMesh.ui \uff09\u3057\u3001_dexcsTaskPanelCfdMesh.py \u4e2d\u3001\u3053<br>\u308c\u3092\u547c\u3073\u51fa\u3059\u90e8\u5206\u3092\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u5909\u66f4\u3057\u305f\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>51: self.form = FreeCADGui.PySideUic.loadUi(os.path.join(os.path.dirname(__file__), \"dexcsTaskPanelCfdMesh.ui\"))<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">(2) _dexcsTaskPanelCfdMesh.py<\/h3>\n\n\n\n<p>\u30bf\u30b9\u30af\u753b\u9762\u4e2d\u3001 [Write mesh case] \u30dc\u30bf\u30f3\u3092\u62bc\u3057\u305f\u6642\u306b\u5b9f\u884c\u3055\u308c\u308b\u95a2\u6570\uff08 writeMesh \uff09\u306f\u3001<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>def writeMesh(self):\n    import importlib\n    importlib.reload(CfdMeshTools)\n    self.console_message_cart = \u2019\u2019\n    self.Start = time.time()\n    # Re-initialise CfdMeshTools with new parameters\n    self.store()\n    FreeCADGui.addModule(\"CfdMeshTools\")\n    FreeCADGui.addModule(\"CfdTools\")\n    FreeCADGui.doCommand(\"FreeCAD.ActiveDocument.\" + self.mesh_obj.Name + \".Proxy.cart_mesh = \"\n    \"CfdMeshTools.CfdMeshTools(FreeCAD.ActiveDocument.\" + self.mesh_obj.Name + \")\")\n    FreeCADGui.doCommand(\"cart_mesh = FreeCAD.ActiveDocument.\" + self.mesh_obj.Name + \".Proxy.c\n    cart_mesh = self.mesh_obj.Proxy.cart_mesh\n    self.consoleMessage(\"Preparing meshing ...\")\n    try:\n        QApplication.setOverrideCursor(Qt.WaitCursor)\n        setQuantity(self.form.if_max, str(cart_mesh.getClmax()))\n        print(\u2019Part to mesh:\\n\n        Name: \u2019\n        + cart_mesh.part_obj.Name + \u2019, Label: \u2019\n        + cart_mesh.part_obj.Label + \u2019, ShapeType: \u2019\n        + cart_mesh.part_obj.Shape.ShapeType)\n        print(\u2019\n        CharacteristicLengthMax: \u2019 + str(cart_mesh.clmax))\n        analysis = CfdTools.getParentAnalysisObject(self.mesh_obj)\n        FreeCADGui.doCommand(\"cart_mesh.getFilePaths(CfdTools.getOutputPath(FreeCAD.ActiveD\n        FreeCADGui.doCommand(\"cart_mesh.setupMeshCaseDir()\")\n        self.consoleMessage(\"Exporting mesh refinement data ...\")\n        FreeCADGui.doCommand(\"cart_mesh.processRefinements()\")  # Writes stls so need file\n        FreeCADGui.doCommand(\"cart_mesh.processDimension()\")\n        FreeCADGui.doCommand(\"cart_mesh.writeMeshCase()\")\n        self.consoleMessage(\"Exporting the part surfaces ...\")\n        FreeCADGui.doCommand(\"cart_mesh.writePartFile()\")\n        self.consoleMessage(\"Mesh case written to {}\".format(self.cart_mesh.meshCaseDir))\n   except Exception as ex:\n        self.consoleMessage(\"Error \" + type(ex).__name__ + \": \" + str(ex), \u2019#FF0000\u2019)\n        raise\n   finally:\n        QApplication.restoreOverrideCursor()\n   self.updateUI()<\/code><\/pre>\n\n\n\n<p>\u3068\u306a\u3063\u3066\u304a\u308a\u3001\uff12\u884c\u76ee\u306e importlib.reload(CfdMeshTools) \u3042\u305f\u308a\u306e\u5f79\u5272\u3084\u3001 FreeCADGui.doCommand()\u306a\u3069\u306e\u4f7f\u3044\u65b9\u304c\u4eca\u3072\u3068\u3064\u306f\u3063\u304d\u308a\u3057\u306a\u3044\u90e8\u5206\u306f\u3042\u3063\u305f\u304c\u3001\u308f\u304b\u3089\u306a\u3044\u90e8\u5206\u306f\u305d\u306e\u307e\u307e\u6b8b\u3057\u3001\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u6539\u5909\u3057\u305f\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>def writeMesh(self):\n   import importlib\n   importlib.reload(CfdMeshTools)\n   self.console_message_cart = \u2019\u2019\n   self.Start = time.time()\n   # Re-initialise CfdMeshTools with new parameters\n   self.store()\n   FreeCADGui.addModule(\"CfdMeshTools\")\n   FreeCADGui.addModule(\"dexcsCfdMeshTools\")\n   self.consoleMessage(\"Preparing meshing ...\")\n   cart_mesh = self.cart_mesh\n   try:\n        QApplication.setOverrideCursor(Qt.WaitCursor)\n        <span class=\"has-inline-color has-vivid-red-color\">FreeCADGui.doCommand(\"dexcsCfdMesh = dexcsCfdMeshTools.MainControl()\")\n        FreeCADGui.doCommand(\"dexcsCfdMesh.perform(\"+ \"\u2019\" + cart_mesh.meshCaseDir + \"\u2019\" + \")\")<\/span>\n        self.consoleMessage(\"Exporting the part surfaces ...\")\n   except Exception as ex:\n        self.consoleMessage(\"Error \" + type(ex).__name__ + \": \" + str(ex), \u2019#FF0000\u2019)\n    raise\n   finally:\n        QApplication.restoreOverrideCursor()\n   self.updateUI()<\/code><\/pre>\n\n\n\n<p>\u5909\u66f4\u306f\u3001<br>try: \u4ee5\u4e0b\u306e\u30d6\u30ed\u30c3\u30af<span class=\"has-inline-color has-vivid-red-color\">\u6731\u5b57<\/span>\u90e8\u5206\u3067\u3001 DEXCS \u30aa\u30ea\u30b8\u30ca\u30eb\u306e\u30de\u30af\u30ed\u3092\u6539\u5909\u3057\u305f dexcsCfdMeshTools.MainControl()<br>\u306e\u3001 perform \u3092\u4f7f\u3063\u3066\u3001 cfMesh \u7528\u306e\u30d1\u30e9\u30e1\u30bf\u30bb\u30c3\u30c8\u3092\u4f5c\u6210\u3057\u3001\u304b\u3064\u30e1\u30c3\u30b7\u30e5\u4f5c\u6210\u7528\u306e Allmesh \u30b3\u30de\u30f3\u30c9\u3082\u751f<br>\u6210\u3059\u308b\u3088\u3046\u306b\u3057\u305f ( \u30de\u30af\u30ed\u6539\u5909\u306e\u8a73\u7d30\u306f\u6b21\u7bc0\u3067\u8aac\u660e ) \u3002<br>\u306a\u304a\u3001\u30d1\u30e9\u30e1\u30bf\u30bb\u30c3\u30c8\u306e\u4f5c\u6210\u306b\u6210\u529f\u3059\u308b\u3068\u3001 [Run mesher] \u30dc\u30bf\u30f3\u304c\u6709\u52b9\u306b\u306a\u308b\u3002\u3053\u308c\u306f self.updateUI() \u3092<br>\u5b9f\u884c\u3057\u305f\u969b\u306b\u3001 Allmesh \u306e\u5b58\u5728\u304c\u5224\u5b9a\u7406\u7531\u306b\u306a\u3063\u3066\u3044\u308b\u306e\u3067\u3001\u4e0a\u8a18 DEXCS \u30de\u30af\u30ed\u306e\u6539\u5909\u306e\u4e2d\u3067\u3001 AllMesh<br>\u30b3\u30de\u30f3\u30c9\u4f5c\u6210\u3092\u8ffd\u52a0\u3057\u305f\u6b21\u7b2c\u3067\u3042\u308b\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>def updateUI(self):\n    case_path = self.cart_mesh.meshCaseDir\n    print(case_path)\n    self.form.pb_edit_mesh.setEnabled(os.path.exists(case_path))\n    self.form.pb_run_mesh.setEnabled(os.path.exists(os.path.join(case_path, \"Allmesh\")))\n    self.form.pb_paraview.setEnabled(os.path.exists(os.path.join(case_path, \"pv.foam\")))\n    self.form.pb_load_mesh.setEnabled(os.path.exists(os.path.join(case_path, \"mesh_outside.stl\"\n    utility = self.form.cb_utility.currentText()\n    if utility == \"snappyHexMesh\":\n        self.form.snappySpecificProperties.setVisible(True)\n    elif utility == \"cfMesh\":\n        self.form.snappySpecificProperties.setVisible(False)<\/code><\/pre>\n\n\n\n<p>Allmesh \u304c\u6240\u5b9a\u306e\u5f62\u5f0f\u3067\u4f5c\u6210\u3055\u308c\u3066\u3044\u308c\u3070\u3001 [Run mesher] \u30dc\u30bf\u30f3\u3092\u62bc\u3057\u3066\u5b9f\u884c\u3055\u308c\u308b\u95a2\u6570\uff08 runMesh \uff09<br>\u3092\u305d\u306e\u307e\u307e\u6539\u5909\u7121\u3057\u3067\u4f7f\u3063\u3066\u30e1\u30c3\u30b7\u30e5\u4f5c\u6210\u304c\u3067\u304d\u308b\u3002\u30e1\u30c3\u30b7\u30e5\u4f5c\u6210\u5f8c\u306e [Paraview] \u30dc\u30bf\u30f3\u306f\u4e0b\u8a18\u95a2\u6570\uff08 def<br>meshFinished \uff09\u306b\u3066\u6709\u52b9\u306b\u306a\u308b\u304c\u3001\u3053\u308c\uff08 openParaview \uff09\u3082\u305d\u306e\u307e\u307e\u6539\u5909\u7121\u3057\u3067\u4f7f\u3048\u308b\u3088\u3046\u306b\u3059\u308b\u306b\u306f\u3001<br>pv.foam \u3068 pvScriptMesh.py \u306e\u5b58\u5728\u304c\u524d\u63d0\u3068\u306a\u308b\u3002\u305d\u3053\u3067\u3001<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>def meshFinished(self, exit_code):\n    if exit_code == 0:\n        self.consoleMessage(\u2019Meshing completed\u2019)\n        self.form.pb_run_mesh.setEnabled(True)\n        self.form.pb_stop_mesh.setEnabled(False)\n        self.form.pb_paraview.setEnabled(True)\n        self.form.pb_load_mesh.setEnabled(True)\n        <span class=\"has-inline-color has-vivid-red-color\">self.template_path = os.path.join(CfdTools.get_module_path(), \"data\", \"dexcsMesh\")\n        settings={}\n        settings&#91;\u2019MeshPath\u2019] = self.cart_mesh.meshCaseDir\n        TemplateBuilder.TemplateBuilder(self.cart_mesh.meshCaseDir, self.template_path, set<\/span><\/code><\/pre>\n\n\n\n<p>\u4e0a\u8a18\u5f15\u7528\u30d6\u30ed\u30c3\u30af\u4e2d\u306e\u4e0b4\u884c\uff08<span class=\"has-inline-color has-vivid-red-color\">\u6731\u5b57<\/span>\u90e8\uff09\u3092\u8ffd\u52a0\u3057\u305f\u3002\u3053\u308c\u306f\u3001.FreeCAD\/Mod\/CfdOF\/data\/dexcsMesh\u30d5\u30a9\u30eb\u30c0\u4e0b\u306b\u96db\u5f62\u30d5\u30a1\u30a4\u30eb\u3092\u53ce\u7d0d\u3057\u3001\u305d\u306e\u5185\u5bb9\uff08MeshPath\u3067\u6307\u5b9a\u3055\u308c\u308b\u90e8\u5206\uff09\u3092\u66f8\u304d\u63db\u3048\u3066\u3001\u6240\u5b9a\u306e\u5834\u6240\uff08self.cart_mesh.meshCaseDir\uff09\u306b\u53ce\u7d0d\u3059\u308b\u3082\u306e\u3067\u3042\u308b\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">(3) DEXCS \u30de\u30af\u30ed\u306e\u6539\u5909 1<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>FreeCADGui.doCommand(\"dexcsCfdMesh.perform(\"+ \"\u2019\" + cart_mesh.meshCaseDir + \"\u2019\" + \")\")<\/code><\/pre>\n\n\n\n<p>\u306b\u3066\u3001 DEXCS \u30de\u30af\u30ed\uff08 dexcsCfdMeshTools.py \uff09 Maincontrol() \u30af\u30e9\u30b9\u4e2d\u306e def perform() \u304c\u5b9f\u884c\u3055\u308c\u308b\u3002<br>\u305d\u306e\u5185\u5bb9\u306f\u4ee5\u4e0b\u306e\u901a\u308a\uff08\u3042\u307e\u308a\u610f\u5473\u306e\u306a\u3044\u30b3\u30e1\u30f3\u30c8\u884c\u3084\u30c7\u30d0\u30c3\u30b0\u7528\u306e print \u884c\u306f\u524a\u9664\u3057\u3066\u3042\u308b\uff09\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>def perform(self, CaseFilePath):\n    self.<span class=\"has-inline-color has-vivid-cyan-blue-color\"><strong>makeStlFile<\/strong><\/span>(CaseFilePath)\n    self.fmsFileName = CaseFilePath + MainControl.SLASH_STR + self.fileStem + MainControl.DOT_F\n    command = \u2019. \u2019 + MainControl.BASHRC_PATH_4_OPENFOAM + \";\" + MainControl.SURFACE_FEATURE_EDG\n    command = command + MainControl.SPACE_STR + \" 30 \"\n    command = command + MainControl.SPACE_STR + self.stlFileName + MainControl.SPACE_STR\n    command = command + self.fmsFileName\n    os.system(command)\n    constantFolder = CaseFilePath + \"\/constant\"\n    templateSolver = self.SOLVER_PATH_TEMPLATE\n    if not os.path.isdir(constantFolder):\n        command = \"cp -r \" + templateSolver + \"\/constant \" + CaseFilePath + \"\/\"\n        os.system(command)\n        command = \"rm -rf \" + constantFolder + \"\/polyMesh\"\n        os.system(command)\n    systemFolder = CaseFilePath + \"\/system\"\n    if not os.path.isdir(systemFolder):\n        command = \"cp -r \" + templateSolver + \"\/system \" + CaseFilePath + \"\/\"\n        os.system(command)\n    zeroFolder = CaseFilePath + \"\/0\"\n    if not os.path.isdir(zeroFolder):\n        command = \"cp -rf \" + templateSolver + \"\/0 \" + CaseFilePath + \"\/\"\n        os.system(command)\n    self.<strong><span class=\"has-inline-color has-vivid-cyan-blue-color\">makeMeshDict<\/span><\/strong>(CaseFilePath)\n    <span class=\"has-inline-color has-vivid-red-color\">os.chdir(CaseFilePath)\n    # cfmesh\u306e\u5b9f\u884c\u30d5\u30a1\u30a4\u30eb\u4f5c\u6210 \n    caseName = CaseFilePath\n    title = \"#!\/bin\/bash\\n\"\n    envSet = \". \" + MainControl.BASHRC_PATH_4_OPENFOAM + \";\\n\"\n    solverSet = \"cartesianMesh | tee cfmesh.log\\n\"\n    sleep = \"sleep 2\\n\"\n    cont = title + envSet + solverSet + sleep\n    f=open(\".\/Allmesh\",\"w\")\n    f.write(cont)\n    f.close()\n    # \u5b9f\u884c\u6a29\u4ed8\u4e0e\n    os.system(\"chmod a+x Allmesh\")<\/span><\/code><\/pre>\n\n\n\n<p>\u6700\u4e0b\u6bb5\u306e<span class=\"has-inline-color has-vivid-red-color\">\u6731\u5b57<\/span>\u90e8\u3092\u8ffd\u52a0\u3057\u3001\u30e1\u30c3\u30b7\u30e5\u4f5c\u6210\u7528\u306e\u30b9\u30af\u30ea\u30d7\u30c8 Allmesh \u3092\u4f5c\u6210\u3059\u308b\u3088\u3046\u306b\u3057\u305f\u3002\u3053\u306e\u90e8\u5206\u306f\u3001\u30aa\u30ea\u30b8\u30ca<br>\u30eb\u306e DEXCS \u30de\u30af\u30ed\u3067\u30e1\u30c3\u30b7\u30e5\u4f5c\u6210\u3092\u5b9f\u884c\u3059\u308b\u95a2\u6570def makeCartesianMeshPerform(self, CaseFilePath):<br>\u4e2d\u306b\u3066 run \u30b9\u30af\u30ea\u30d7\u30c8\u3092\u4f5c\u6210\u3057\u3066\u3044\u308b\u90e8\u5206\u3067\u3001\u540d\u524d\u3092 run \u304b\u3089 Allmesh \u306b\u5909\u66f4\u3057\u305f\u3060\u3051\u3067\u3042\u308b\u3002<br>\u3053\u306e perform \u95a2\u6570\u304b\u3089\u3001 2 \u3064\u306e\u95a2\u6570\uff08 <strong><span class=\"has-inline-color has-vivid-cyan-blue-color\">makeStlFile<\/span><\/strong> \u3068 <strong><span class=\"has-inline-color has-vivid-cyan-blue-color\">makeMeshDict <\/span><\/strong>\uff09\u304c\u547c\u3073\u51fa\u3055\u308c\u3066\u304a\u308a\u3001\u3053\u308c\u3089 2 \u3064\u306e<br>\u95a2\u6570\u306e\u5185\u5bb9\u3082\u5909\u66f4\u3059\u308b\u5fc5\u8981\u304c\u3042\u3063\u305f\u3002<br>makeStlFile \u95a2\u6570\u306f\u3001\u8aad\u307f\u8fbc\u3093\u3060 CAD \u30d5\u30a1\u30a4\u30eb\u306b\u683c\u7d0d\u3055\u308c\u305f\u30c7\u30fc\u30bf\u306e\u3046\u3061\u3001 Type \u304c region \u4ee5\u5916\u306e\u30aa\u30d6<br>\u30b8\u30a7\u30af\u30c8\u3092 stl \u30d5\u30a1\u30a4\u30eb\u3068\u3057\u3066\u51fa\u529b\u3059\u308b\u3082\u306e\u3067\u3001 DEXCS \u30de\u30af\u30ed\u306e\u30aa\u30ea\u30b8\u30ca\u30eb\u3067\u306f\u3001 region \u3067\u3042\u308b\u304b\u3069\u3046\u304b\u306e<br>\u5224\u5b9a\u306b ViewControl \u30af\u30e9\u30b9\u3092\u4f7f\u7528\u3057\u3066\u3044\u305f\u306e\u3067\u3001\u3053\u306e\u90e8\u5206\u306f\u5ec3\u6b62\u3002\u66ff\u308f\u308a\u306b\u3001\u30e1\u30c3\u30b7\u30e5\u7d30\u5206\u5316\u30aa\u30d6\u30b8\u30a7\u30af\u30c8<br>\u306e\u30d7\u30ed\u30d1\u30c6\u30a3\u3092\u4f7f\u7528\u3059\u308b\u4e8b\u306b\u306a\u308b\u304c\u3001\u5f53\u9762\u306f region \u304c\u7121\u3044\u30e2\u30c7\u30eb\u3067\u5b9f\u65bd\u3059\u308b\u306e\u3067\u3001\u672a\u7d44\u307f\u8fbc\u307f\u3068\u3057\u3001\u4ee5\u4e0b\u306e<br>\u6539\u5909\u5185\u5bb9\u306b\u3066\u6b63\u5e38\u306b\u52d5\u4f5c\u3059\u308b\u4e8b\u3092\u78ba\u8a8d\u3057\u305f\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>1: def makeStlFile(self, CaseFilePath):\n2:\n3: self.caseFilePath = CaseFilePath\n4: self.fileStem = os.path.splitext(self.caseFilePath)&#91;0]\n5: self.fileStem = self.fileStem.split(MainControl.SLASH_STR)&#91;-1]\n6: self.stlFileName = CaseFilePath + MainControl.SLASH_STR + self.fileStem + \u2019.stl\u2019\n7: self.fileName = CaseFilePath + MainControl.SLASH_STR + self.fileStem\n8:\n9: outputStlFile = open(self.stlFileName, \u2019w\u2019)\n10:\n11: doc = FreeCAD.activeDocument()\n12: for obj in doc.Objects:\n13:     if obj.ViewObject.Visibility:\n14:         __objs__=&#91;]\n15:         try:\n16:             if obj.Shape:\n17:                 # CfdSolver \u3092\u9664\u5916\n18:                 if obj.isDerivedFrom(\"Part::FeaturePython\"):\n19:                     pass\n20:                 else:\n21:                     __objs__.append(obj)\n22:                     file=self.fileName+obj.Label+\u2019.ast\u2019\n23:                     Mesh.export(__objs__,file)\n24:                     importFile = open(file,\u2019r\u2019)\n25:                     temp = importFile.readlines()\n26:                     for line in temp:\n27:                         if \u2019endsolid\u2019 in line:\n28:                             outputStlFile.write(\u2019endsolid \u2019 + o\n29:                         elif \u2019solid\u2019 in line:\n30:                             outputStlFile.write(\u2019solid \u2019 + obj.\n31:                         else:\n32:                             outputStlFile.write(line)\n33:                     importFile.close\n34:                     os.remove(file)\n35:         except AttributeError:\n36:             pass\n37: outputStlFile.close<\/code><\/pre>\n\n\n\n<p>13 \u884c\u76ee\u3067 obj.ViewObject.Visibility \uff08\u8868\u793a\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\uff09\u3060\u3051\u3092\u5bfe\u8c61\u306b\u3057\u3066\u3044\u308b\u70b9\u306f\u5f93\u6765\u901a\u308a\u3067\u3042\u308b\u3002\u30dd<br>\u30a4\u30f3\u30c8\u306f\u3001 16 \u884c\u76ee\u3067 obj.Shape \u306b\u7d5e\u308a\u3053\u3093\u3067\u3044\u308b\u70b9\u3067\u3042\u308a\u3001\u3053\u308c\u306b\u3088\u308a\u3001 dexcsCfdOF \u306b\u3088\u3063\u3066\u8ffd\u52a0\u3055\u308c\u308b<br>\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u306f\u3001\u57fa\u672c\u7684\u306b\u9664\u5916\u3055\u308c\u308b\u4e8b\u306b\u306a\u308b\u3002\u4f46\u3057\u3001 CfdSolver \u306e\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u3060\u3051\u306f\u3001\u4f55\u6545\u304b\u30d7\u30ed\u30d1<br>\u30c6\u30a3\u3068\u3057\u3066 Placement \u3092\u6709\u3057\u3066\u304a\u308a\u3001 obj.Shape \u3068\u3057\u3066\u89e3\u91c8\u3055\u308c\u308b\u3088\u3046\u3067\u3042\u3063\u305f\uff08\u56f3 13 \uff09\u3002\u5f53\u521d\u3053\u308c\u3092\u9664\u5916\u305b<br>\u305a\u3068\u3082 STL \u30d5\u30a1\u30a4\u30eb\u3092\u4f5c\u6210\u3059\u308b\u969b\u306b\u5b9f\u5bb3\u306f\u306a\u304b\u3063\u305f\u304c\u3001\u90fd\u5ea6\u30a8\u30e9\u30fc\u30e1\u30c3\u30bb\u30fc\u30b8\u304c\u8868\u793a\u3055\u308c\u308b\u306e\u3067\u9b31\u9676\u3057\u3044\u3002<br>\u305d\u3053\u3067\u3001 18 \u884c\u76ee\u306e\u9664\u5916\u65b9\u6cd5\u306b\u81f3\u3063\u305f\u3002<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img decoding=\"async\" src=\"https:\/\/ocse2.com\/wp-content\/uploads\/2021\/07\/fig14.png\" alt=\"\" class=\"wp-image-13184\" width=\"795\" height=\"445\"\/><figcaption>\u56f3 13 dexcsCfdOF \u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u306e\u30d7\u30ed\u30d1\u30c6\u30a3<\/figcaption><\/figure>\n\n\n\n<p>makeMeshDict \u95a2\u6570\u306f\u3001\u57fa\u672c\u7684\u306b cfMesh \u7528\u306e meshDict \u30d5\u30a1\u30a4\u30eb\u3092\u3001\u30de\u30cb\u30e5\u30a2\u30eb\u306b\u8a18\u8f09\u901a\u308a\u306b\u4f5c\u6210\u3059\u308b\u3082<br>\u306e\u3067\u3001\u30d1\u30e9\u30e1\u30bf\u5909\u66f4\u304c\u5fc5\u8981\u306a\u90e8\u5206\u306f viewControl \u30af\u30e9\u30b9\u304b\u3089\u53d6\u5f97\u3059\u308b\u4ed5\u7d44\u307f\u3068\u306a\u3063\u3066\u3044\u305f\u3002\u305d\u3053\u3067\u3053\u306e\u30d1\u30e9\u30e1<br>\u30bf\u5909\u66f4\u90e8\u5206\u3092\u7f6e\u304d\u63db\u3048\u308c\u3070\u826f\u3044\u3060\u3051\u306e\u306f\u305a\u3067\u3042\u308b\u3002\u5f53\u9762\u306e\u5bfe\u8c61\u4f8b\u984c\uff08 backstepSimple \uff09\u3067\u306f\u3001\u57fa\u672c\u30d1\u30e9\u30e1\u30bf\u306b<br>\u4fc2\u308b\u90e8\u5206\u3060\u3051\u3092\u5909\u66f4\u5bfe\u8c61\u306b\u3059\u308b\u306e\u3067\u3001\u30d1\u30e9\u30e1\u30bf\u306e\u5024\u3092\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u4eee\u8a2d\u5b9a\u3057\u3066\u304a\u3044\u3066\u3001<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>testDict_maxCellSize = 0.583\ntestDict_minCellSize = Model.EMPTY_STR\ntestDict_untangleLayerCHKOption = 0\ntestDict_optimiseLayerCHKOption = 0\ntestDict_keepCellsIntersectingBoundaryCHKOption = 0\ntestDict_stopAfterEdgeExtractionCHKOption = 0<\/code><\/pre>\n\n\n\n<p>\u3053\u308c\u3092\u4f7f\u3063\u3066\u3001viewControl \u30af\u30e9\u30b9\u304b\u3089\u5024\u3092\u53d6\u5f97\u3057\u3066\u3044\u305f\u90e8\u5206\uff08\u4f8b\u3048\u3070\u3001 self.viewControl.get maxCellSizeValue() \uff09<br>\u3092\u3001\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u5909\u66f4\u3057\u305f\uff08 6 \u7b87\u6240\uff09\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>#\u2019maxCellSize\\t\u2019 + str(<span class=\"has-inline-color has-vivid-cyan-blue-color\">self.viewControl.get_maxCellSizeValue()<\/span>) + \u2019;\\n\u2019\n\u2019maxCellSize\\t\u2019 + str(<span class=\"has-inline-color has-vivid-red-color\">testDict_maxCellSize<\/span>) + \u2019;\\n\u2019<\/code><\/pre>\n\n\n\n<p>\u3055\u3089\u306b\u3001\u30d1\u30c3\u30c1\u3084\u30ea\u30fc\u30b8\u30e7\u30f3\u3092\u30d1\u30fc\u30c4\u6bce\u306b\u7d30\u5206\u5316\u6307\u5b9a\u3057\u3066\u8ffd\u52a0\u3059\u308b\u90e8\u5206\u306f\u5f53\u9762\u4f7f\u7528\u3057\u306a\u3044\u306e\u3067\u3001\u5168\u3066\u30b3\u30e1\u30f3<br>\u30c8\u30a2\u30a6\u30c8\u3057\u305f\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># local refinement \/\/ \u6307\u5b9a\u3055\u308c\u3066\u304a\u308a\u3001\u4ee5\u5916\u306e\u3082\u306e cellSizeregion\n# iRow=0\n# while (self.viewControl.get_gridTableValue(iRow,0)):\n#     iRow = iRow + 1\n#     #print (\u2019### \u2019, self.viewControl.get_gridTableValue(iRow-1,2) , self.viewControl.get_gridTabl\n#     if (self.viewControl.get_gridTableValue(iRow-1,2) != Model.EMPTY_STR and\n#         self.viewControl.get_gridTableValue(iRow-1,1) != MainControl.REGION_STR):\n# \uff08\u4ee5\u4e0b\u7701\u7565 )<\/code><\/pre>\n\n\n\n<p>\u4ee5\u4e0a\u306e\u6539\u5909\u306b\u3066\u3001\u5f53\u9762\u306e\u5bfe\u8c61\u4f8b\u984c\uff08 backstepSimple \uff09\u306b\u3066\u3001 meshDict \u4f5c\u6210\u304b\u3089\u21d2\u30e1\u30c3\u30b7\u30e5\u4f5c\u6210\u21d2 Paraview<br>\u306b\u3088\u308b\u30e1\u30c3\u30b7\u30e5\u78ba\u8a8d\u306e\u4e00\u9023\u306e\u52d5\u4f5c\u3092\u78ba\u8a8d\u3059\u308b\u4e8b\u304c\u51fa\u6765\u305f\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">(4) \u30e1\u30c3\u30b7\u30e5\u57fa\u672c\u30b5\u30a4\u30ba\u306e\u81ea\u52d5\u8a08\u7b97\u3068 meshDict \u3078\u306e\u53cd\u6620\u65b9\u6cd5<\/h3>\n\n\n\n<p>\u4ee5\u4e0a\u3067\u3001\u5f53\u521d\u8a2d\u5b9a\u3057\u305f\u30de\u30a4\u30eb\u30b9\u30c8\u30fc\u30f3\u306b\u5230\u9054\u3057\u305f\u3053\u3068\u306b\u306a\u308b\u304c\u3001\u6b21\u306e\u30b9\u30c6\u30c3\u30d7\uff08\u30e1\u30c3\u30b7\u30e5\u7d30\u5206\u5316\u30b3\u30f3\u30c6\u30ca\u306e<br>\u6539\u5909\uff09\u306b\u9032\u3080\u524d\u306b\u3001\u30b3\u30f3\u30c6\u30ca\u3067\u8a2d\u5b9a\u3057\u305f\u30d1\u30e9\u30e1\u30bf\u3092\u3001\u5f93\u6765\u306e viewControl \u30af\u30e9\u30b9\u3092\u4f7f\u308f\u306a\u3044\u3067\u3001\u3069\u3046\u3084\u3063\u3066<br>meshDict \u4f5c\u6210\u30d7\u30ed\u30bb\u30b9\u306b\u53cd\u6620\u3059\u308b\u304b\u306e\u65b9\u6cd5\u3092\u63a2\u3063\u305f\u3002\u305d\u306e\u6700\u521d\u306e\u624b\u639b\u304b\u308a\u3068\u3057\u3066\u3001\u30e1\u30c3\u30b7\u30e5\u57fa\u672c\u30b5\u30a4\u30ba\u306b\u3064<br>\u3044\u3066\u3001\u3053\u308c\u3092\u53cd\u6620\u3059\u308b\u65b9\u6cd5\u306b\u3064\u3044\u3066\u8abf\u67fb\u3057\u305f\u3002<br>\u307e\u305a\u306f\u3001\u30e1\u30c3\u30b7\u30e5\u4f5c\u6210\u30b3\u30f3\u30c6\u30ca\u4e2d\u306b\u8a18\u3055\u308c\u305f\u5024\u306e\u53d6\u5f97\u65b9\u6cd5\u3067\u3042\u308b\u304c\u3001\u8a66\u884c\u932f\u8aa4\u306e\u672b\u3001\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u3057\u3066\u5b9f\u73fe<br>\u3067\u304d\u305f\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>#testDict_maxCellSize = 0.583\nfor obj in FreeCAD.ActiveDocument.Objects:\n    if hasattr(obj, \"Proxy\") and isinstance(obj.Proxy, _CfdMesh):\n        testDict_maxCellSize = obj.CharacteristicLengthMax<\/code><\/pre>\n\n\n\n<p>\u307e\u305f\u3001\u30e1\u30c3\u30b7\u30e5\u4f5c\u6210\u30b3\u30f3\u30c6\u30ca\u4e2d\u306e Base element size: \u306e\u5024\u305d\u306e\u3082\u306e\u306f\u3001\u624b\u5165\u529b\u3067\u5909\u66f4\u306f\u53ef\u80fd\u3067\u3042\u308b\u3002\u3057<br>\u304b\u3057\u3001\u3069\u3046\u305b\u306a\u3089\u30e2\u30c7\u30eb\u3092\u8aad\u307f\u8fbc\u3093\u3060\u72b6\u614b\u306b\u3066\u305d\u306e\u30b5\u30a4\u30ba\u3092\u8abf\u3079\u3066\u81ea\u52d5\u8a08\u7b97\u3057\u305f\u5024\u3092\u8868\u793a\u3057\u3066\u304a\u304d\u305f\u3044\u3002<br>CfdMeshTools.py \u306b\u3066\u3001\u30e1\u30c3\u30b7\u30e5\u4f5c\u6210\u30b3\u30f3\u30c6\u30ca\u304c\u4f5c\u6210\u3055\u308c\u308b\u969b\u306e def init \u30d6\u30ed\u30c3\u30af\u4e2d\u3001<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># Default to 2 % of bounding box characteristic length\nself.clmax = Units.Quantity(self.mesh_obj.CharacteristicLengthMax).Value\nif self.clmax &lt;= 0.0:\n    #shape = self.part_obj.Shape\n    #cl_bound_mag = math.sqrt(shape.BoundBox.XLength**2 + shape.BoundBox.YLength**2 + shape.Bou\n    #cl_bound_min = min(min(shape.BoundBox.XLength, shape.BoundBox.YLength), shape.BoundBox.ZLe\n    #self.clmax = min(0.02*cl_bound_mag, 0.4*cl_bound_min)\n    xmax = -1.0e+30\n    xmin = 1.0e+30\n    ymax = -1.0e+30\n    ymin = 1.0e+30\n    zmax = -1.0e+30\n    zmin = 1.0e+30\n    doc = FreeCAD.activeDocument()\n    for obj in doc.Objects:\n        try:\n            if obj.Shape:\n                if obj.Shape.BoundBox.XMax &gt; xmax:\n                    xmax = obj.Shape.BoundBox.XMax\n                if obj.Shape.BoundBox.XMin &lt; xmin:\n                    xmin = obj.Shape.BoundBox.XMin\n                if obj.Shape.BoundBox.YMax &gt; ymax:\n                    ymax = obj.Shape.BoundBox.YMax\n                if obj.Shape.BoundBox.YMin &lt; ymin:\n                    ymin = obj.Shape.BoundBox.YMin\n                if obj.Shape.BoundBox.ZMax &gt; zmax:\n                    zmax = obj.Shape.BoundBox.ZMax\n                if obj.Shape.BoundBox.ZMin &lt; zmin:\n                    zmin = obj.Shape.BoundBox.ZMin\n        except AttributeError:\n            pass\n    sumOf3Edges = (xmax-xmin+ymax-ymin+zmax-zmin)\n    self.mesh_obj.CharacteristicLengthMax = sumOf3Edges \/ 60.0<\/code><\/pre>\n\n\n\n<p>\u3068\u8ffd\u52a0\u3059\u308b\u3053\u3068\u3067\u3001\u5909\u66f4\u3057\u305f\u5024\u304c\u8a2d\u5b9a\u3055\u308c\u3066\u304a\u308c\u3070\u305d\u308c\u3092\u305d\u306e\u307e\u307e\u8868\u793a\u3057\u3001\u305d\u308c\u304c\u7121\u3044\u5834\u5408\uff08 self.clmax=0 \uff09<br>\u306b\u306f\u3001\u73fe\u884c DEXCS \u30de\u30af\u30ed\u3068\u540c\u7b49\u306e\u8a08\u7b97\u65b9\u5f0f\u3067\u7b97\u51fa\u3057\u305f\u5024\u3092\u8868\u793a\u3059\u308b\u3053\u3068\u306b\u306a\u308b\u3002\u3061\u306a\u307f\u306b\u3053\u306e\u6700\u4e0b\u884c\u30ed\u30b8\u30c3\u30af\u306f\u3001<br>\u4eca\u5f8c\u6539\u826f\u3059\u308b\u4e88\u5b9a\u3067\u3042\u308b\u3002<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">(5) \u6b8b\u3055\u308c\u305f\u8ab2\u984c<\/h3>\n\n\n\n<ul class=\"wp-block-list\"><li>makeStlFile \u95a2\u6570\u306b\u304a\u3044\u3066\u3001 region \u30bf\u30a4\u30d7\u306e\u30d1\u30fc\u30c4\u3092\u9664\u5916\u3059\u308b\u65b9\u6cd5\u306e\u7d44\u307f\u8fbc\u307f<\/li><li>\u4f5c\u6210\u3055\u308c\u308bstl \/  fms\u30d5\u30a1\u30a4\u30eb\u306e\u540d\u524d\u304c\u3001.stl \/ .fms \u3068\u306a\u3063\u3066\u3044\u308b<\/li><li>cfMesh \u306e 2D \u5bfe\u5fdc<\/li><li>\u30b9\u30b1\u30fc\u30eb\u5909\u63db\u6a5f\u80fd\u306e\u7d44\u307f\u8fbc\u307f<\/li><li>\u30e1\u30c3\u30b7\u30e3\u30fc\u3068\u3057\u3066\u3001 snappyHexMesh \u3084 gmsh \u3078\u306e\u5bfe\u5fdc\u306f\u5c06\u6765\u306e\u8ab2\u984c\u3068\u3057\u3066\u3001\u5f53\u9762\u306f\u30a4\u30f3\u30bf\u30d5\u30a7\u30fc\u30b9\u90e8\u5206\u3092\u524a\u9664\uff08\u3082\u3057\u304f\u306f\u898b\u3048\u306a\u3044\u3088\u3046\u306b\uff09\u3059\u308b\u3002<\/li><li>\u6539\u5909\u30e2\u30b8\u30e5\u30fc\u30eb\u4e2d\u3001\u4e0d\u8981\uff08\u4f7f\u308f\u306a\u304f\u306a\u3063\u305f\uff09\u90e8\u5206\u306e\u524a\u9664<\/li><\/ul>\n\n\n\n<p><a href=\"https:\/\/ocse2.com\/?p=13170\">\u524d\u3078<\/a>\u3000<a href=\"https:\/\/ocse2.com\/?p=13115\">\u76ee\u6b21<\/a>\u3000<a href=\"https:\/\/ocse2.com\/?p=13206\">\u6b21\u3078<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>3.5 \u30e1\u30c3\u30b7\u30e5\u4f5c\u6210\u65b9\u6cd5\uff08\u7d30\u5206\u5316\u6307\u5b9a\u7121\u3057\uff09\u306e\u5909\u66f4\uff08DEXCS\u5316\uff09 1 \u73fe\u884c\u306e CfdOF \u3067\u306f\u3001\u30e1\u30c3\u30b7\u30e5\u9818\u57df\uff08\u9589\u3058\u305f\u9818\u57df\uff09\u3092\u5b9a\u7fa9\u3057\u305f Part \u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u3092\u9078\u629e\u3057\u306a\u3044\u3068\u3001\u30e1\u30c3\u30b7\u30e5\u4f5c\u6210\u753b\u9762\u3092\u8868\u793a\u3059\u308b\u3053\u3068\u304c\u51fa\u6765\u306a\u3044\uff08\u30dc\u30bf\u30f3 [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[17],"tags":[74,48,28,23,13],"class_list":["post-13172","post","type-post","status-publish","format-standard","hentry","category-toolstips","tag-cfdof","tag-cfmesh","tag-dexcs","tag-freecad","tag-openfoam"],"views":240,"_links":{"self":[{"href":"https:\/\/ocse2.com\/index.php?rest_route=\/wp\/v2\/posts\/13172","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ocse2.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/ocse2.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/ocse2.com\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/ocse2.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=13172"}],"version-history":[{"count":11,"href":"https:\/\/ocse2.com\/index.php?rest_route=\/wp\/v2\/posts\/13172\/revisions"}],"predecessor-version":[{"id":13355,"href":"https:\/\/ocse2.com\/index.php?rest_route=\/wp\/v2\/posts\/13172\/revisions\/13355"}],"wp:attachment":[{"href":"https:\/\/ocse2.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=13172"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/ocse2.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=13172"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/ocse2.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=13172"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}