{"id":13168,"date":"2021-07-06T10:49:55","date_gmt":"2021-07-06T01:49:55","guid":{"rendered":"https:\/\/ocse2.com\/?p=13168"},"modified":"2021-07-06T17:52:12","modified_gmt":"2021-07-06T08:52:12","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-2","status":"publish","type":"post","link":"https:\/\/ocse2.com\/?p=13168","title":{"rendered":"DEXCS\u30e9\u30f3\u30c1\u30e3\u30fc v2.5 \u88fd\u4f5c\u30e1\u30e2 \/ 3.2"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">3.2 \u6b8b\u5dee\u30d7\u30ed\u30c3\u30c8 2<\/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>\u3053\u3053\u3067\u306f\u3001 DEXCS \u30e9\u30f3\u30c1\u30e3\u30fc\u3067\u4f5c\u6210\u3057\u305f\u30b1\u30fc\u30b9\u30d5\u30a1\u30a4\u30eb\u306b\u5bfe\u3057\u3066\u3001 [ Analysis control] \u30bf\u30b9\u30af\u753b\u9762\uff08\u56f3 11 \uff09<br>\u3092\u6539\u5909\u4f7f\u7528\u3057\u3066\u3001\u8a08\u7b97\u5b9f\u884c\u3001\u6b8b\u5dee\u30d7\u30ed\u30c3\u30c8\u8868\u793a\u3067\u304d\u306a\u3044\u3082\u306e\u304b\u3001\u8a66\u307f\u305f\u7d50\u679c\u306b\u3064\u3044\u3066\u8a18\u3057\u3066\u304a\u304f\u3002<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img fetchpriority=\"high\" decoding=\"async\" width=\"319\" height=\"477\" src=\"https:\/\/ocse2.com\/wp-content\/uploads\/2021\/07\/fig12.png\" alt=\"\" class=\"wp-image-13175\"\/><figcaption>\u56f3 11 [Analysis control] \u30bf\u30b9\u30af\u753b\u9762<\/figcaption><\/figure><\/div>\n\n\n\n<p>[Analysis control] \u30bf\u30b9\u30af\u753b\u9762\u306f\u3001 CfdOF \u30c4\u30fc\u30eb\u30d0\u30fc\u306e [Edit Properties and run solver] \u30dc\u30bf\u30f3\u3092\u30af\u30ea\u30c3\u30af\u3001\u307e\u305f\u306f CfdSolver \u30b3\u30f3\u30c6\u30ca\u3092\u30c0\u30d6\u30eb\u30af\u30ea\u30c3\u30af\u3057\u305f\u6642\u306b\u73fe\u308c\u308b\u3002<br>CfdOF \u672c\u6765\u306e\u4f7f\u7528\u65b9\u6cd5\u3068\u3057\u3066\u306f\u3001 Case[Write] \u30dc\u30bf\u30f3\u3092\u62bc\u3059\u3068\u89e3\u6790\u7528\u306e\u30b1\u30fc\u30b9\u30d5\u30a9\u30eb\u30c0\uff08 case \uff09\u304c\u4f5c\u6210\u3055\u308c\u3001<br>Solver[Run] \u30dc\u30bf\u30f3\u304c\u30a2\u30af\u30c6\u30a3\u30d6\u306b\u306a\u3063\u3066\u3001\u3053\u308c\u3092\u30af\u30ea\u30c3\u30af\u3059\u308b\u3068\u8a08\u7b97\u5b9f\u884c\u304c\u59cb\u307e\u308a\u3001\u540c\u6642\u306b\u6b8b\u5dee\u30d7\u30ed\u30c3\u30c8\u753b<br>\u9762\u304c\u73fe\u308c\u3001\u6b8b\u5dee\u30d7\u30ed\u30c3\u30c8\u56f3\u304c 2 \u79d2\u6bce\u306b\u66f4\u65b0\u3055\u308c\u308b\u3002 Results[Paraview] \u30dc\u30bf\u30f3\u3092\u30af\u30ea\u30c3\u30af\u3059\u308c\u3070\u3001 Paraview \u304c<br>\u7acb\u3061\u4e0a\u304c\u3063\u3066\u53ef\u8996\u5316\u3067\u304d\u308b\u3068\u3044\u3046\u4ed5\u7d44\u307f\u3067\u3042\u308b\u3002<br>Solver[Run] \u30dc\u30bf\u30f3\u3092\u30af\u30ea\u30c3\u30af\u3059\u308b\u3068\u3001 _TaskPanelCfdSolverControl.py \u306e 74 \u884c\u76ee<br><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>74: self.form.pb_run_solver.clicked.connect(self.runSolverProcess)<\/code><\/pre>\n\n\n\n<p><br>\u306b\u5f93\u3063\u3066\u3001 runSolverProcess<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>152: def runSolverProcess(self):\n153:     self.Start = time.time()\n154:\n155:     solverDirectory = os.path.join(self.working_dir, self.solver_object.InputCaseName)\n156:     solverDirectory = os.path.abspath(solverDirectory)\n157:     cmd = self.solver_runner.get_solver_cmd(solverDirectory)\n158:     FreeCAD.Console.PrintMessage(\u2019 \u2019.join(cmd) + \u2019\\n\u2019)\n159:     envVars = self.solver_runner.getRunEnvironment()\n160:     QApplication.setOverrideCursor(Qt.WaitCursor)\n161:     self.solver_run_process.start(cmd, env_vars=envVars)\n162:     if self.solver_run_process.waitForStarted():\n163:         # Setting solve button to inactive to ensure that two instances of the same\n164:         # simultaneously\n165:         self.form.pb_write_inp.setEnabled(False)\n166:         self.form.pb_run_solver.setEnabled(False)\n167:         self.form.terminateSolver.setEnabled(True)\n168:         self.form.pb_paraview.setEnabled(True)\n169:         self.consoleMessage(\"Solver started\")\n170:     else:\n171:          self.consoleMessage(\"Error starting solver\")\n172:     QApplication.restoreOverrideCursor()<\/code><\/pre>\n\n\n\n<p>\u304c\u8d77\u52d5\u3001 157 \u884c\u76ee\u306b\u3066\u3001 self.solver runner.get solver cmd(solverDirectory) \u3092\u7d4c\u3066\u3001 CfdRunnableFoam.py<br>\u306e\u3001 get_solver_cmd<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>89: def get_solver_cmd(self, case_dir):\n90:     self.initResiduals()\n91:\n92:     self.residualPlot = ResidualPlot()\n93:\n94:     # Environment is sourced in run script, so no need to include in run command\n95:     cmd = CfdTools.makeRunCommand(\u2019.\/Allrun\u2019, case_dir, source_env=False)\n96:     FreeCAD.Console.PrintMessage(\"Solver run command: \" + \u2019 \u2019.join(cmd) + \"\\n\")\n97:     return cmd<\/code><\/pre>\n\n\n\n<p>\u3068\u306a\u3063\u3066\u304a\u308a\u3001 92 \u884c\u76ee\u3067\u6b8b\u5dee\u30d7\u30ed\u30c3\u30c8\u3092\u8d77\u52d5\u3001 95 \u884c\u76ee\u3067 .\/Allrun \u30b3\u30de\u30f3\u30c9\u3092\u5b9f\u884c\u3059\u308b\u3068\u3044\u3046\u3082\u306e\u3067\u3042\u308b\u3002\u3067<br>\u306f\u3001\u3053\u306e Allrun \u306f\u3069\u3046\u306a\u3063\u3066\u3044\u308b\u304b\u3068\u3044\u3046\u3068\u3001\u56f3 11[Analysis control] \u30bf\u30b9\u30af\u753b\u9762\u306e Case[Write] \u30dc\u30bf\u30f3\u3092<br>\u30af\u30ea\u30c3\u30af\u3057\u305f\u969b\u306b\u81ea\u52d5\u751f\u6210\u3055\u308c\u308b\u3082\u306e\u3067\u3001\u4ee5\u4e0b\u306e\u5185\u5bb9\u306b\u306a\u3063\u3066\u3044\u305f\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>1: #!\/bin\/bash\n2:\n3: runCommand()\n4: {\n5: if &#91; \"$1\" == \"mpiexec\" ]; then sol=\"$4\"; else sol=\"$1\"; fi\n6: sol=$(basename -- \"$sol\")\n7: sol=\"${sol%.*}\"\n8: if &#91; -f log.\"$sol\" ]; then rm log.\"$sol\"; fi\n9: \"$@\" 1&gt; &gt;(tee -a log.\"$sol\") 2&gt; &gt;(tee -a log.\"$sol\" &gt;&amp;2)\n10: err1=$?\n11: if &#91; ! $err -eq 0 ]; then exit $err; fi\n12: }\n13:\n14: # Unset and source bashrc\n15: FOAMDIR=\"\/home\/et\/OpenFOAM\/OpenFOAM-v2006\"\n16: source \"$FOAMDIR\/etc\/config.sh\/unset\" 2&gt; \/dev\/null\n17: source \"$FOAMDIR\/etc\/bashrc\"\n18:\n19: # Copy mesh from mesh case dir if available\n20: MESHDIR=\"..\/meshCase\"\n21: if &#91; -f \"$MESHDIR\"\/constant\/polyMesh\/faces ]\n22: then\n23: rm -r constant\/polyMesh 2&gt; \/dev\/null\n23: cp -r \"$MESHDIR\"\/constant\/polyMesh constant\/polyMesh\n24: elif &#91; ! -f constant\/polyMesh\/faces ]\n25: then\n26: echo \"Fatal error: Unable to find mesh in directory $MESHDIR\" 1&gt;\\&amp;2\n27: exit 1\n28: fi\n29:\n30: # Update patch name and type\n31: runCommand createPatch -overwrite\n32:\n33: # Run application in parallel\n34: runCommand decomposePar -force\n35: runCommand mpiexec -np 4 simpleFoam -parallel<\/code><\/pre>\n\n\n\n<p>\u30dd\u30a4\u30f3\u30c8\u306f\u3001 19 \u301c 28 \u884c\u76ee\u306b\u3066\u3001\u30e1\u30c3\u30b7\u30e5\u3092\u30b3\u30d4\u30fc\u3057\u3066\u3044\u308b\u70b9\u3084\u3001 30 \u301c 31 \u884c\u76ee\u306f createParch \u306b\u3066\u3001\u5883\u754c\u6761<br>\u4ef6\u3092\u8a2d\u5b9a\u3057\u3066\u3044\u308b\u70b9\u3067\u3042\u308a\u3001\u3053\u308c\u3089\u306f\u672c\u7bc0\u3067\u306e\u7528\u9014\u3067\u306f\u4e0d\u8981\u3068\u306a\u308b\u3082\u306e\u3067\u3001\u6700\u7d42\u306e 2 \u884c\u3067\u3001\u72ec\u81ea\u306e\u7d44\u307f\u8fbc<\/p>\n\n\n\n<p>\u307f runCommand \uff08 3 \u301c 12 \u884c\u76ee\uff09\u3067\u9818\u57df\u5206\u5272\u3068\u4e26\u5217\u8a08\u7b97\u3092\u5b9f\u884c\u3057\u3066\u3044\u308b\u3068\u3044\u3046\u3053\u3068\u3067\u3042\u308b\u3002\u305d\u3053\u3067\u3001\u8a66\u3057\u306b\u3001<br>DEXCS \u30e9\u30f3\u30c1\u30e3\u30fc\u306e\u8a08\u7b97\u5b9f\u884c\u6642\u306b\u4f5c\u6210\u3055\u308c\u308b\u30b9\u30af\u30ea\u30d7\u30c8 run \u3092 Allrun \u306b\u5909\u66f4\u3057\u3066\u4f7f\u7528\u3057\u3066\u307f\u305f\u3068\u3053\u308d\u3001\u554f<br>\u984c\u306a\u304f\u52d5\u4f5c\u3059\u308b\u4e8b\u306f\u78ba\u8a8d\u3067\u304d\u305f\u3002\u4f46\u3057\u3001\u3053\u308c\u3060\u3051\u3067\u306f\u3001\u30b1\u30fc\u30b9\u30d5\u30a1\u30a4\u30eb\u304c\u30c7\u30d5\u30a9\u30eb\u30c8\uff08 \/tmp \uff09\u306e case \u30d5\u30a9\u30eb<br>\u30c0\u5316\u306b\u3042\u308b\u3053\u3068\u304c\u524d\u63d0\u306a\u306e\u3067\u3001\u300c\u7de8\u96c6\u300d\u21d2\u300c\u8a2d\u5b9a\u300d\u30e1\u30cb\u30e5\u30fc\u306b\u3066\u3001\u3053\u306e\u30c7\u30d5\u30a9\u30eb\u30c8\u3092\u3001\u89e3\u6790\u30e2\u30c7\u30eb\u304c\u5b58\u5728\u3059\u308b<br>\u30c7\u30a3\u30ec\u30af\u30c8\u30ea\u306b\u8a2d\u5b9a\u3057\u3066\u304a\u304f\u306e\u3068\u3001 CfdSolverFoam.py \u306e 85 \u884c\u76ee\u3092\u4ee5\u4e0b\u5909\u66f4\u3057\u305f\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>85: #addObjectProperty(obj, \"InputCaseName\", \"case\", \"App::PropertyFile\", \"Solver\",\n86: addObjectProperty(obj, \"InputCaseName\", \"\", \"App::PropertyFile\", \"Solver\",<\/code><\/pre>\n\n\n\n<p>\u305d\u3053\u3067\u3001\u6b21\u306b\u3053\u306e Allrun \u3092\u81ea\u52d5\u4f5c\u6210\u3059\u308b\u65b9\u6cd5\u3067\u3042\u308b\u304c\u3001\u3053\u308c\u306b\u306f\u73fe\u884c\u306e [Analysis control] \u30bf\u30b9\u30af\u753b\u9762\u306e<br>Case[Write] \u30dc\u30bf\u30f3\u3092\u30af\u30ea\u30c3\u30af\u3057\u305f\u6642\u306e\u52d5\u4f5c\u3092\u5909\u66f4\u3059\u308b\u3068\u3044\u3046\u306e\u304c\u9806\u5f53\u3067\u3042\u308d\u3046\u3002\u3064\u307e\u308a\u3001<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>72:#self.form.pb_write_inp.clicked.connect(self.write_input_file_handler)\n73:self.form.pb_write_inp.clicked.connect(self.write_input_file_handler_dexcs)<\/code><\/pre>\n\n\n\n<p>\u3068\u3057\u3066 \u3001 write_input_\ufb01le_handler\u306e\u4ee3\u308f\u308a\u306b\u76f8 \u5fdc \u306e write_input_\ufb01le_handler_dexcs \u3092\u4f5c\u6210\u3057\u305f \u3002<br>write_input_\ufb01le_handler \u306f\u3001<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>def write_input_file_handler(self):\n    self.Start = time.time()\n    import CfdCaseWriterFoam\n    import importlib\n    importlib.reload(CfdCaseWriterFoam)\n    if self.check_prerequisites_helper():\n        self.consoleMessage(\"Case writer called\")\n        self.form.pb_paraview.setEnabled(False)\n        self.form.pb_edit_inp.setEnabled(False)\n        self.form.pb_run_solver.setEnabled(False)\n        QApplication.setOverrideCursor(Qt.WaitCursor)\n        try:\n            FreeCADGui.addModule(\"CfdCaseWriterFoam\")\n            FreeCADGui.doCommand(\"writer = CfdCaseWriterFoam.CfdCaseWriterFoam(FreeCAD.\nself.solver_runner.analysis.Name + \")\")\n            FreeCADGui.doCommand(\"writer.writeCase()\")\n        except Exception as e:\n            self.consoleMessage(\"Error writing case:\", \"#FF0000\")\n            self.consoleMessage(type(e).__name__ + \": \" + str(e), \"#FF0000\")\n            self.consoleMessage(\"Write case setup file failed\", \"#FF0000\")\n            raise\n        finally:\n            QApplication.restoreOverrideCursor()\n            self.consoleMessage(\"Write case is completed\")\n            self.updateUI()\n            self.form.pb_run_solver.setEnabled(True)\n        else:\n            self.consoleMessage(\"Case check failed\", \"#FF0000\")<\/code><\/pre>\n\n\n\n<p>\u3068\u306a\u3063\u3066\u3044\u305f\u306e\u3092\u3001\u4ee5\u4e0b\u6731\u5b57\u90e8\u5206\u306b\u5909\u66f4\u3057\u305f\u3060\u3051\u3067\u3042\u308b\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>def write_input_file_handler&#91;<span class=\"has-inline-color has-vivid-red-color\">_dexcs<\/span>](self):\n    self.Start = time.time()\n    import &#91;<span class=\"has-inline-color has-vivid-red-color\">dexcsCfdCaseWriterFoam<\/span>]\n    import importlib\n    importlib.reload(&#91;<span class=\"has-inline-color has-vivid-red-color\">dexcsCfdCaseWriterFoam<\/span>])\n    if self.check_prerequisites_helper():\n        self.consoleMessage(\"&#91;<span class=\"has-inline-color has-vivid-red-color\">Writing dexcs Allrun ...<\/span>]\")\n        self.form.pb_paraview.setEnabled(False)\n        self.form.pb_edit_inp.setEnabled(False)\n        self.form.pb_run_solver.setEnabled(False)\n        QApplication.setOverrideCursor(Qt.WaitCursor)\n        try:\n            FreeCADGui.addModule(\"&#91;<span class=\"has-inline-color has-vivid-red-color\">dexcsCfdCaseWriterFoam<\/span>]\")\n            FreeCADGui.doCommand(\"writer =      &#91;<span class=\"has-inline-color has-vivid-red-color\">dexcsCfdCaseWriterFoam.dexcsCfdCaseWriteself.solver_runner.analysis<\/span>.Name + \")\")\n            FreeCADGui.doCommand(\"writer.&#91;<span class=\"has-inline-color has-vivid-red-color\">writeAllrun()<\/span>]\")\n        except Exception as e:\n            self.consoleMessage(\"Error writing case:\", \"#FF0000\")\n            self.consoleMessage(type(e).__name__ + \": \" + str(e), \"#FF0000\")\n            self.consoleMessage(\"Write case setup file failed\", \"#FF0000\")\n            raise\n        finally:\n            QApplication.restoreOverrideCursor()\n            self.consoleMessage(\"&#91;<span class=\"has-inline-color has-vivid-red-color\">Write dexcs Allrun is completed<\/span>]\")\n            self.updateUI()\n            self.form.pb_run_solver.setEnabled(True)\n        else:\n            self.consoleMessage(\"Case check failed\", \"#FF0000\")<\/code><\/pre>\n\n\n\n<p>\u6731\u5b57\u90e8\u5206\u306e\u5909\u66f4\u3082\u3001\u30aa\u30ea\u30b8\u30ca\u30eb\u304c CfdCaseWriter \u3092 import \u3057\u3066\u3044\u305f\u306e\u306b\u5bfe\u3057\u3001\u3053\u308c\u3092 dexcsCfdCaseWriter\u306b\u5909\u66f4\u3057\u3066\u3044\u308b\u306e\u3067\u3001\u95a2\u9023\u90e8\u3092\u6a5f\u68b0\u7684\u306b\u5909\u66f4\u3057\u305f\u306e\u3068\u3001\u30e1\u30c3\u30bb\u30fc\u30b8\u306e\u5909\u66f4\u3001\u5b9f\u969b\u306e\u66f8\u304d\u8fbc\u307f\u3092\u884c\u3046\u95a2\u6570\uff08 writer \uff09<br>\u306e\u5185\u5bb9\u304c\u5909\u66f4\u3059\u308b\u306e\u3067\u76f8\u5fdc\u90e8\u5206\u3092\u5909\u66f4\u3057\u3066\u3044\u308b\u3060\u3051\u3067\u3042\u308b\u3002<br>dexcsCfdCaseWriter.py \u3082\u3001\u30aa\u30ea\u30b8\u30ca\u30eb\u306e CfdCaseWriter.py \u3092\u30d9\u30fc\u30b9\u306b\u5909\u66f4\u3057\u305f\u3002\u3068\u306f\u3044\u3046\u3082\u306e\u3001\u30aa\u30ea\u30b8<br>\u30ca\u30eb\u306e CfdCaseWriter.py \u4e2d\u3067\u5b9a\u7fa9\u3057\u3066\u3044\u308b\u69d8\u3005\u306a\u95a2\u6570\u306f\u4f7f\u308f\u306a\u3044\u3002\u5ff5\u306e\u70ba\u3001<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>def __init__(self, analysis_obj):<\/code><\/pre>\n\n\n\n<p>\u306e\u521d\u671f\u5316\u90e8\u5206\u3060\u3051\u306f\u305d\u306e\u307e\u307e\u6d41\u7528\u3057\u3066\u3044\u308b\u3002\u3053\u308c\u306f\u3053\u306e\u95a2\u6570\u304c\u30b3\u30fc\u30eb\u3055\u308c\u305f\u6642\u306e\u5f15\u6570\uff08 analysis_obj \uff09\u3092<br>\u4f7f\u3063\u3066\u3001 self.working_dir \u306a\u3069\u3001\u66f8\u304d\u8fbc\u307f\u306b\u5fc5\u8981\u3068\u306a\u308b\u30d1\u30e9\u30e1\u30bf\u3092\u3053\u3053\u3067\u5b9a\u7fa9\u3057\u3066\u304a\u308a\u3001\u3053\u308c\u3089\u306f\u305d\u306e\u307e\u307e\u4f7f<br>\u3044\u305f\u3044\u305f\u3081\u3067\u3042\u308b *5 \u3002\u3053\u308c\u4ee5\u5916\u306e\u95a2\u6570\u306f\u3059\u3079\u3066\u524a\u9664\u3001\u65b0\u305f\u306b Allrun \u30d5\u30a1\u30a4\u30eb\u3092\u4f5c\u6210\u3059\u308b\u95a2\u6570\uff08 writeAllrun \uff09<br>\u3092\u3001 DEXCS \u30e9\u30f3\u30c1\u30e3\u30fc\u306e\u4f5c\u6cd5\u306b\u5247\u308a\u4f5c\u308a\u76f4\u3057\u3066\u3044\u308b\u3002<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>55: def writeAllrun(self, progressCallback=None):\n56:     \"\"\" writeCase() will collect case settings, and finally build a runnable case. \"\"\"\n57:     cfdMessage(\"Writing AllrunDexcs to folder {}\\n\".format(self.working_dir))\n58:     if not os.path.exists(self.working_dir):\n59:         raise IOError(\"Path \" + self.working_dir + \" does not exist.\")\n60:\n61:     # Perform initialisation here rather than __init__ in case of path changes\n62:     self.case_folder = os.path.join(self.working_dir, self.solver_obj.InputCaseName)\n63:     self.case_folder = os.path.expanduser(os.path.abspath(self.case_folder))\n64:\n65:     os.chdir(self.case_folder)\n66:     solver = self.getSolver().replace(\u2019;\u2019,\u2019\u2019)\n67:\n68:     import pathlib\n69:     fname = os.path.join(self.case_folder, \"Allrun\")\n70:     p_new = pathlib.Path(fname)\n71:\n72:     title = \"#!\/bin\/bash\\n\"\n73:     configDict = pyDexcsSwakSubset.readConfigTreeFoam()\n74:     envOpenFOAMFix = configDict&#91;\"bashrcFOAM\"]\n75:     configDict = pyDexcsSwakSubset.readConfigDexcs()\n76:     envTreeFoam = configDict&#91;\"TreeFoam\"]\n77:     envOpenFOAMFix = envOpenFOAMFix.replace(\u2019 $ TreeFoamUserPath\u2019,envTreeFoam)\n78:     envOpenFOAMFix = os.path.expanduser(envOpenFOAMFix)\n79:     envSet = \"source \" + envOpenFOAMFix + \u2019\\n\u2019\n80:     #envSet = \". \/opt\/OpenFOAM\/OpenFOAM-v2006\/etc\/bashrc\\n\"\n81:     solverSet = solver + \" | tee solve.log\"\n82:     cont = title + envSet + solverSet\n83:\n84:     with p_new.open(mode=\u2019w\u2019) as f:\n85:     f.write(cont)\n86:\n87:     # Update Allrun permission - will fail silently on Windows\n88:     fname = os.path.join(self.case_folder, \"Allrun\")\n89:     import stat\n90:     s = os.stat(fname)\n91:     os.chmod(fname, s.st_mode | stat.S_IEXEC)\n92:\n93:     cfdMessage(\"Successfully wrote case to folder {}\\n\".format(self.working_dir))\n94:\n95:     self.template_path = os.path.join(CfdTools.get_module_path(), \"data\", \"dexcs\")\n96:     settings={}\n97:     settings&#91;\u2019system\u2019]={}\n98:     settings&#91;\u2019system\u2019]&#91;\u2019CasePath\u2019] = self.case_folder\n99:     TemplateBuilder.TemplateBuilder(self.case_folder, self.template_path, settings)\n100:\n101:    return True<\/code><\/pre>\n\n\n\n<p>55 \u301c 63 \u3001 87 \u301c 93 \u884c\u306f\u3001\u30aa\u30ea\u30b8\u30ca\u30eb\u306e writeCase \u95a2\u6570\u90e8\u5206\u304b\u3089\u6d41\u7528\u3057\u3066\u304a\u308a\u3001 72 \u301c 85 \u304c\u3001 DEXCS \u30e9\u30f3\u30c1\u30e3\u30fc\u3068\u540c\u3058\u3084\u308a\u65b9\u3067\u5b9f\u884c\u30b9\u30af\u30ea\u30d7\u30c8\u3092\u4f5c\u6210\u3057\u3066\u3044\u308b\u90e8\u5206\u3067\u3042\u308b\u3002\u3053\u3053\u3067 66 \u884c\u76ee\u3067\u30bd\u30eb\u30d0\u30fc\u540d\uff08 solver \uff09\u3092\u3001 getSolver \u95a2\u6570\u3067\u53d6\u5f97\u3057\u3066\u3044\u308b\u3002\u7559\u610f\u70b9\u3068\u3057\u3066\u3001\u30bd\u30eb\u30d0\u30fc\u540d\u3092\u53d6\u5f97\u3059\u308b\u95a2\u6570\u3068\u3057\u3066\u3001\u30aa\u30ea\u30b8\u30ca\u30eb\u306e CfdCaseWriterFoam.py\u3067\u306f getSolverName \u3068\u3044\u3046\u95a2\u6570\u3092\u5b9a\u7fa9\u3057\u3066\u3044\u308b\u304c\u3001\u3053\u308c\u306f CfdOF \u306e\u30b3\u30f3\u30c6\u30ca\u60c5\u5831\u304b\u3089\u53d6\u5f97\u3059\u308b\u3082\u306e\u3067\u3001DEXCS \u30e9\u30f3\u30c1\u30e3\u30fc\u3067\u306f\u30b1\u30fc\u30b9\u30d5\u30a1\u30a4\u30eb\u304c\u5b58\u5728\u3059\u308b\u3068\u3044\u3046\u524d\u63d0\u306a\u306e\u3067\u3001 system\/controlDict \u3092\u8aad\u307f\u53d6\u3063\u3066\u53d6\u5f97\uff08 getSolver \uff09\u3068\u3044\u3046\u9055\u3044\u304c\u3042\u308b\u3002<br>\u307e\u305f\u3001 95 \u301c 99 \u884c\u76ee\u306f\u3001 Paraview \u306e\u8d77\u52d5\u7528\u306b\u3001\u30b9\u30af\u30ea\u30d7\u30c8\uff08 pvScript.py \uff09\u3068\u3001\u30c0\u30df\u30fc\u30d5\u30a1\u30a4\u30eb pv.foam \u3092\u4f5c\u6210\u3059\u308b\u3082\u306e\u3067\u3001\u672c\u6765\u3053\u306e\u95a2\u6570\uff08 writeAllrun \uff09\u306b\u542b\u3081\u308b\u3079\u304d\u5185\u5bb9\u3067\u306f\u306a\u3044\u304c\u3001\u4fbf\u5b9c\u7684\u306b\u3053\u3053\u3067\u4f5c\u6210\u3057\u3066\u307f\u305f\u3082\u306e\u3067\u3042\u308a\u3001\u3044\u305a\u308c\u306f\u5225\u95a2\u6570\u306a\u308a\u3067\u51e6\u7406\u3059\u308b\u3053\u3068\u306b\u3057\u305f\u3044\u3002\u672c\u30d6\u30ed\u30c3\u30af\u306f\u3001\u5148\u306e 2.4 \u306b\u3066\u3001\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u30d5\u30a1\u30a4\u30eb\u3092\u66f8\u304d\u63db\u3048\u308b\u4ed5\u7d44\u307f\u3068\u3057\u3066 TemplateBuilder \u306b\u3064\u3044\u3066\u6c4e\u7528\u7684\u306b\u4f7f\u3048\u308b\u3068\u8a18\u3057\u305f\u304c\u3001\u3053\u3053\u3067\u5b9f\u969b\u306b\u305d\u3046\u3044\u3046\u4f7f\u3044\u65b9\u3092\u5b9f\u8df5\u3057\u3066\u307f\u305f\u3068\u3044\u3046\u3053\u3068\u3067\u3042\u308a\u3001\u672c\u4f8b\u3092\u53c2\u8003\u306b\u3059\u308c\u3070\u3001\u5fdc\u7528\u7bc4\u56f2\u3082\u62e1\u3052\u3089\u308c\u305d\u3046\u3067\u3042\u308b\u3002<br>\u4ee5\u4e0b\u7c21\u5358\u306b\u3001\u672c\u4f8b\u3067\u306e\u66f8\u304d\u63db\u3048\u5185\u5bb9\u3092\u8aac\u660e\u3057\u3066\u304a\u304f\u3002 99 \u884c\u76ee\u304c\u3001<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>TemplateBuilder.TemplateBuilder(self.case_folder, self.template_path, settings)<\/code><\/pre>\n\n\n\n<p>\u3068 \u306a \u3063 \u3066 \u304a \u308a \u3001\u3053 \u308c \u3067 \u3001\u300c self.template path \u4e2d \u306e \u30d5 \u30a1 \u30a4 \u30eb \u3092 settings \u306b \u5fdc \u3058 \u3066 \u66f8 \u304d \u63db \u3048 \u305f \u3082 \u306e<br>\u3092 self.case folder \u306b \u53ce \u7d0d \u3059 \u308b \u300d\u3068 \u3044 \u3046 \u3053 \u3068 \u3092 \u3084 \u3063 \u3066 \u304f \u308c \u308b \u3002\u3053 \u3053 \u3067 \u3001 self.template path \u306f \u3053 \u306e \u5834<br>\u5408\u3001 .FreeCAD\/Mod\/CfdOF\/data\/dexcs \u3067\u3042\u308a\u3001\u305d\u306e\u4e2d\u306b\u306f\u3001 pv.Foam \u3068\u3001 pvScriopt.py \u3068\u3044\u3046 2 \u3064\u306e<br>\u30d5\u30a1\u30a4\u30eb\u3092\u53ce\u7d0d\u3057\u3066\u3042\u308b\u3002 pv.foam \u306f\u30c0\u30df\u30fc\u30d5\u30a1\u30a4\u30eb\u3067\u5358\u306b\u305d\u306e\u307e\u307e self.case folder \uff08\u89e3\u6790\u7528\u306e\u30b1\u30fc\u30b9\u30d5\u30a9\u30eb\u30c0\uff09\u306b\u30b3\u30d4\u30fc\u3055\u308c\u308b\u3060\u3051\u3067\u3042\u308b\u304c\u3001 pvScriopt.py \u306f\u3001\u4ee5\u4e0b\u306e\u3088\u3046\u306b\u306a\u3063\u3066\u304a\u308a\u3001<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>1: #### import the simple module from the paraview\n2: from paraview.simple import *\n3: #### disable automatic camera reset on \u2019Show\u2019\n4: paraview.simple._DisableFirstRenderCameraReset()\n5:\n6: # create a new OpenFOAMReader\n7: pfoam = OpenFOAMReader(FileName=r\u2019%(system\/CasePath%)\/pv.foam\u2019)\n8: %{%(solver\/Parallel%)\n9: %:True\n10: pfoam.CaseType = \u2019Decomposed Case\u2019\n11: %:False\n12: pfoam.CaseType = \u2019Reconstructed Case\u2019\n13: %}\n14: pfoam.Decomposepolyhedra = 0\n15:\n16: # get active view\n17: renderView1 = GetActive\n18:\t\u3000\u3000\u3000...... \u4ee5\u4e0b\u7701\u7565<\/code><\/pre>\n\n\n\n<p>\u3053\u308c\u3092 setting \u30d1\u30e9\u30e1\u30bf\uff08\u8f9e\u66f8\uff09\u3092\u4f7f\u3063\u3066\u66f8\u304d\u63db\u3048\u308b\u3068\u3044\u3046\u3053\u3068\u3067\u3042\u308b\u3002\u672c\u4f8b\u3067\u5b9a\u7fa9\u3057\u305f setting \u306f 1 \u9805\u76ee<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>settings&#91;\u2019system\u2019]&#91;\u2019CasePath\u2019] = self.case_folder<\/code><\/pre>\n\n\n\n<p>\u3060\u3051\u306a\u306e\u3067\u3001<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>7 \u884c\u76ee\u306e\u3001 %(system\/CasePath%) \u306e\u90e8\u5206\u3092\u3001 self.case folder \u306b\u7f6e\u304d\u63db\u3048\u308b\u3002<\/li><li>8 \u884c\u76ee\u306e %(solver\/Parallel%) \u306b\u5bfe\u3057\u3066\u306f\u3001\u3053\u306e\u8f9e\u66f8\u304c\u5b58\u5728\u3057\u306a\u3044\u306e\u3067\u3001 12 \u884c\u76ee\u304c\u63a1\u7528\u3055\u308c\u308b\u3002<\/li><\/ul>\n\n\n\n<p>\u3068\u3044\u3046\u3053\u3068\u306b\u306a\u308b\u3002<\/p>\n\n\n\n<p><a href=\"https:\/\/ocse2.com\/?p=13166\">\u524d\u3078<\/a>\u3000<a href=\"https:\/\/ocse2.com\/?p=13115\">\u76ee\u6b21<\/a>\u3000<a href=\"https:\/\/ocse2.com\/?p=13170\">\u6b21\u3078<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>3.2 \u6b8b\u5dee\u30d7\u30ed\u30c3\u30c8 2 \u3053\u3053\u3067\u306f\u3001 DEXCS \u30e9\u30f3\u30c1\u30e3\u30fc\u3067\u4f5c\u6210\u3057\u305f\u30b1\u30fc\u30b9\u30d5\u30a1\u30a4\u30eb\u306b\u5bfe\u3057\u3066\u3001 [ Analysis control] \u30bf\u30b9\u30af\u753b\u9762\uff08\u56f3 11 \uff09\u3092\u6539\u5909\u4f7f\u7528\u3057\u3066\u3001\u8a08\u7b97\u5b9f\u884c\u3001\u6b8b\u5dee\u30d7\u30ed\u30c3\u30c8\u8868\u793a\u3067\u304d\u306a\u3044\u3082\u306e\u304b\u3001\u8a66 [&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-13168","post","type-post","status-publish","format-standard","hentry","category-toolstips","tag-cfdof","tag-cfmesh","tag-dexcs","tag-freecad","tag-openfoam"],"views":169,"_links":{"self":[{"href":"https:\/\/ocse2.com\/index.php?rest_route=\/wp\/v2\/posts\/13168","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=13168"}],"version-history":[{"count":7,"href":"https:\/\/ocse2.com\/index.php?rest_route=\/wp\/v2\/posts\/13168\/revisions"}],"predecessor-version":[{"id":13195,"href":"https:\/\/ocse2.com\/index.php?rest_route=\/wp\/v2\/posts\/13168\/revisions\/13195"}],"wp:attachment":[{"href":"https:\/\/ocse2.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=13168"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/ocse2.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=13168"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/ocse2.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=13168"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}