From 4639283b459f9ff9093e289908cc003db8745b82 Mon Sep 17 00:00:00 2001 From: Uwe Date: Thu, 16 Feb 2023 01:26:04 +0100 Subject: [PATCH] [FEM] make pvtu file filtering optional - it is sensible to filter by default, however, it turned out that on some complex models Elmer fails to compute if the mesh volume regions are too small (in most cases) or at a certain mesh region. By disabling the filtering, one gets at least for the latter case a visual feedback where the mesh volume of the different CPU are (by also setting a transparency to the result pipeline). --- src/Mod/Fem/Gui/DlgSettingsFemElmer.ui | 164 +++++++++++------- src/Mod/Fem/Gui/DlgSettingsFemElmerImp.cpp | 2 + src/Mod/Fem/Gui/ViewProviderFemPostObject.cpp | 11 +- 3 files changed, 110 insertions(+), 67 deletions(-) diff --git a/src/Mod/Fem/Gui/DlgSettingsFemElmer.ui b/src/Mod/Fem/Gui/DlgSettingsFemElmer.ui index de8da1844e..598048f7d0 100644 --- a/src/Mod/Fem/Gui/DlgSettingsFemElmer.ui +++ b/src/Mod/Fem/Gui/DlgSettingsFemElmer.ui @@ -6,15 +6,15 @@ 0 0 - 400 - 203 + 350 + 259 Elmer - - + + @@ -39,6 +39,46 @@ + + + + false + + + + 0 + 0 + + + + + 0 + 0 + + + + + 0 + 0 + + + + + 0 + 0 + + + + <html><head/><body><p>Leave blank to use default Elmer elmer binary file</p><p><span style=" font-weight:600;">Note:</span> To use multithreading you must specify here<br> the executable variant with the suffix &quot;_mpi&quot;.</p></body></html> + + + elmerBinaryPath + + + Mod/Fem/Elmer + + + @@ -55,22 +95,6 @@ - - - - false - - - - 100 - 0 - - - - ElmerGrid binary path - - - @@ -134,6 +158,22 @@ + + + + false + + + + 100 + 0 + + + + ElmerGrid binary path + + + @@ -150,54 +190,23 @@ - - - - false - - - - 0 - 0 - - - - - 0 - 0 - - - - - 0 - 0 - - - - - 0 - 0 - - - - <html><head/><body><p>Leave blank to use default Elmer elmer binary file</p><p><span style=" font-weight:600;">Note:</span> To use multithreading you must specify here<br> the executable variant with the suffix &quot;_mpi&quot;.</p></body></html> - - - elmerBinaryPath - - - Mod/Fem/Elmer - - - - - + + + + + + + Options + + + + Multithreading: - + @@ -246,10 +255,37 @@ + + + + Multi-CPU core support: + + + + + + + The mesh volume regions processed by each CPU core +will be merged to make the volume boundaries invisible. + + + Filter results + + + true + + + FilterMultiCPUResults + + + Mod/Fem/Elmer + + + - + Qt::Vertical diff --git a/src/Mod/Fem/Gui/DlgSettingsFemElmerImp.cpp b/src/Mod/Fem/Gui/DlgSettingsFemElmerImp.cpp index 40110f59d7..201bbe3f24 100644 --- a/src/Mod/Fem/Gui/DlgSettingsFemElmerImp.cpp +++ b/src/Mod/Fem/Gui/DlgSettingsFemElmerImp.cpp @@ -70,6 +70,7 @@ void DlgSettingsFemElmerImp::saveSettings() ui->fc_grid_binary_path->onSave(); ui->sb_elmer_num_cores->onSave(); + ui->cb_elmer_filtering->onSave(); } void DlgSettingsFemElmerImp::loadSettings() @@ -81,6 +82,7 @@ void DlgSettingsFemElmerImp::loadSettings() ui->fc_grid_binary_path->onRestore(); ui->sb_elmer_num_cores->onRestore(); + ui->cb_elmer_filtering->onRestore(); } /** diff --git a/src/Mod/Fem/Gui/ViewProviderFemPostObject.cpp b/src/Mod/Fem/Gui/ViewProviderFemPostObject.cpp index 7f664962ff..7e0ac35dde 100644 --- a/src/Mod/Fem/Gui/ViewProviderFemPostObject.cpp +++ b/src/Mod/Fem/Gui/ViewProviderFemPostObject.cpp @@ -706,9 +706,14 @@ void ViewProviderFemPostObject::filterArtifacts(vtkDataObject* data) m_wireframe->SetInputData(data); m_points->SetInputData(data); - // filter artifacts - // only necessary for the surface filter - filterArtifacts(data); + // filtering artifacts is only necessary for the surface filter + auto hGrp = App::GetApplication().GetParameterGroupByPath( + "User parameter:BaseApp/Preferences/Mod/Fem/Elmer"); + bool FilterMultiCPUResults = hGrp->GetBool("FilterMultiCPUResults", 1); + if (FilterMultiCPUResults) + filterArtifacts(data); + else + m_surface->SetInputData(data); return true; }