'keepCellsIntersectingPatches\n',
'{\n',
#'// patchName\n',
#'//\t{\n',
#'//\t\tkeepCells 1; // 1 active or 0 inactive\n',
#'//\t}\n',keepCellsListString,
'}\n',
'\n',
'// remove cells where distinct parts of the mesh are joined together (optional)\n',
'// active only when keepCellsIntersectingBoundary is active\n',
'// checkForGluedMesh 0; // 1 active or 0 inactive\n',
'\n',
'// remove cells the cells intersected\n',
'// by the selected patched/subsets\n',
'// from the mesh template (optional)\n',
'// it is active when keepCellsIntersectingBoundary\n',
'// is switched on\n',
'removeCellsIntersectingPatches\n',
'{\n',
#'// patchName\n',
#'//\t{\n',
#'//\t\tkeepCells 1; // 0 remove or 1 keep\n',
#'//\t}\n',removeCellsListString,
'}\n',
CfdOFでの細分化指定方法は、相対サイズ(Relative element size)を指定するというもので、実際にDEXCSランチャーの標準モデルで使ってみたのであるが、数値の指定方法として悩ましい面が多々あった。そこで、これをDEXCS方式(セルサイズを直接指定または二分木法の細分化レベルを指定)に変更することを懸案としていたので、まずはこれを実施することとした。
# Common to all
#addObjectProperty(obj, "RelativeLength", 0.75, "App::PropertyFloat", "",
# "Set relative length of the elements for this region")
addObjectProperty(obj, "CellSize", "0 m", "App::PropertyLength", "",
"Set cell size for selected object(s)")
addObjectProperty(obj, "RefinementLevel", 1, "App::PropertyInteger", "",
"Set refinement level for for selected object(s)")
self.form.pb_write_mesh.clicked.connect(self.writeMesh)
self.form.pb_edit_mesh.clicked.connect(self.editMesh)
self.form.pb_run_mesh.clicked.connect(self.runMesh)
self.form.pb_stop_mesh.clicked.connect(self.killMeshProcess)
self.form.pb_paraview.clicked.connect(self.openParaview)
self.form.pb_load_mesh.clicked.connect(self.pbLoadMeshClicked)
self.form.pb_clear_mesh.clicked.connect(self.pbClearMeshClicked)
self.form.pb_searchPointInMesh.clicked.connect(self.searchPointInMesh)
self.form.pb_stop_mesh.setEnabled(False)
self.form.pb_paraview.setEnabled(False)
self.form.snappySpecificProperties.setVisible(False)
self.form.optimizer_frame.setVisible(False)
self.form.check_reCalculateNormals.setChecked(True)
self.form.cb_dimension.addItems(_CfdMesh.known_element_dimensions)
self.form.cb_utility.addItems(_CfdMesh.known_mesh_utility)
self.form.cb_workflowControls.addItems(_CfdMesh.known_workflowControls)
self.form.if_max.setToolTip("Enter 0 to use default value")
self.form.pb_searchPointInMesh.setToolTip("Specify below a point vector inside of the mesh or press 'Search' "
"to try to automatically find a point")
self.form.if_cellsbetweenlevels.setToolTip("Number of cells between each of level of refinement")
self.form.if_edgerefine.setToolTip("Number of refinement levels for all edges")
self.form.check_optimiseLayer.stateChanged.connect(self.updateUI)
また、def_updateUI()での更新において、
if self.form.check_optimiseLayer.isChecked():
self.form.optimizer_frame.setVisible(True)
else:
self.form.optimizer_frame.setVisible(False)
iteration 1
Using up to 4 cpu(s) for the stress calculation.
Using up to 4 cpu(s) for the symmetric stiffness/mass contributions.
Factoring the system of equations using the symmetric spooles solver
Using 1 cpu for spooles.
Using up to 4 cpu(s) for the stress calculation.
スレッド数を4にして計算しているので、確かに 4 cpu(s) というログになっているのですが、もっとよく見ると、spooles solver の部分では、1 cpu にしかなっていないという点に、今更ながら気付いたという事です。つまり、一番肝心な逆行列を計算するところで、マルチスレッド計算出来ていなかったという事です。