From a896bdbe3d864bc53016ff8d571d67578179d491 Mon Sep 17 00:00:00 2001 From: migelmaso Date: Fri, 2 Sep 2022 16:23:29 +0200 Subject: [PATCH 01/12] pfem sw initial files --- kratos.gid/apps/PfemSw/app.json | 54 ++++++++++++++++++ kratos.gid/apps/PfemSw/images/logo.png | Bin 0 -> 10627 bytes kratos.gid/apps/PfemSw/start.tcl | 23 ++++++++ kratos.gid/apps/PfemSw/write/write.tcl | 37 ++++++++++++ .../PfemSw/write/writeProjectParameters.tcl | 47 +++++++++++++++ kratos.gid/apps/PfemSw/xml/Main.spd | 31 ++++++++++ kratos.gid/apps/PfemSw/xml/XmlController.tcl | 49 ++++++++++++++++ 7 files changed, 241 insertions(+) create mode 100644 kratos.gid/apps/PfemSw/app.json create mode 100644 kratos.gid/apps/PfemSw/images/logo.png create mode 100644 kratos.gid/apps/PfemSw/start.tcl create mode 100644 kratos.gid/apps/PfemSw/write/write.tcl create mode 100644 kratos.gid/apps/PfemSw/write/writeProjectParameters.tcl create mode 100644 kratos.gid/apps/PfemSw/xml/Main.spd create mode 100644 kratos.gid/apps/PfemSw/xml/XmlController.tcl diff --git a/kratos.gid/apps/PfemSw/app.json b/kratos.gid/apps/PfemSw/app.json new file mode 100644 index 000000000..4edb9b099 --- /dev/null +++ b/kratos.gid/apps/PfemSw/app.json @@ -0,0 +1,54 @@ +{ + "id": "PfemSw", + "name": "Pfem SW Coupling", + "prefix": "PfemSw_", + "themed": false, + "kratos_name": "PfemShallowWaterApplication", + "python_packages": [ + "KratosPfemFluidDynamicsApplication", + "KratosShallowWaterApplication", + "KratosMappingApplication" + ], + "dimensions": [ + "2D", + "3D" + ], + "script_files": [ + "start.tcl", + "xml/XmlController.tcl", + "write/write.tcl", + "write/writeProjectParameters.tcl" + ], + "start_script": "::PfemSw::Init", + "requeriments": { + "apps": [ + "PfemFluid", + "ShallowWater" + ], + "minimum_gid_version": "15.1.3d" + }, + "permissions": { + "open_tree": true, + "show_toolbar": true, + "intervals": true, + "wizard": false + }, + "unique_names": { + // "parts": "STParts", + // "initial_conditions": "STInitialConditions", + // "nodal_conditions": "STNodalConditions", + // "conditions": "STLoads", + // "time_parameters": "STTimeParameters", + // "results": "STResults", + // "materials": "STMaterials" + }, + "write": { + "coordinates": "all", + "materials_file": "StructuralMaterials.json", + "properties_location": "json", + "model_part_name": "Structure", + "enable_dynamic_substepping": false + }, + "main_launch_file": "../../exec/MainKratos.py", + "examples": "examples/examples.xml" +} diff --git a/kratos.gid/apps/PfemSw/images/logo.png b/kratos.gid/apps/PfemSw/images/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..be403b263e1d2b928e5264f85768b476ac9e7625 GIT binary patch literal 10627 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 literal 0 HcmV?d00001 diff --git a/kratos.gid/apps/PfemSw/start.tcl b/kratos.gid/apps/PfemSw/start.tcl new file mode 100644 index 000000000..c89260dd7 --- /dev/null +++ b/kratos.gid/apps/PfemSw/start.tcl @@ -0,0 +1,23 @@ +namespace eval ::PfemSw { + Kratos::AddNamespace [namespace current] + + # Variable declaration + variable dir + variable _app + + proc GetAttribute {name} {variable _app; return [$_app getProperty $name]} + proc GetUniqueName {name} {variable _app; return [$_app getUniqueName $name]} + proc GetWriteProperty {name} {variable _app; return [$_app getWriteProperty $name]} +} + +proc ::PfemSw::Init { app } { + # Variable initialization + variable dir + variable _app + + set _app $app + set dir [apps::getMyDir "PfemSw"] + + ::PfemSw::xml::Init + ::PfemSw::write::Init +} diff --git a/kratos.gid/apps/PfemSw/write/write.tcl b/kratos.gid/apps/PfemSw/write/write.tcl new file mode 100644 index 000000000..dda44a2d8 --- /dev/null +++ b/kratos.gid/apps/PfemSw/write/write.tcl @@ -0,0 +1,37 @@ +namespace eval ::PfemSw::write { + namespace path ::PfemSw + Kratos::AddNamespace [namespace current] + + variable pfem_project_parameters + variable sw_project_parameters + variable mdpa_names +} + +proc ::PfemSw::write::Init { } { + variable pfem_project_parameters + variable sw_project_parameters + set pfem_project_parameters [dict create ] + set sw_project_parameters [dict create ] + + variable mdpa_names + set mdpa_names [dict create ] +} + +# Events +proc ::PfemSw::write::writeModelPartEvent { } { + variable mdpa_names + set filename [Kratos::GetModelName] + + PfemFluid::write::Init + PfemFluid::write::InitConditionsMap + PfemFluid::write::SetCoordinatesByGroups 1 + write::writeAppMDPA PfemFluid + dict set mdpa_names PfemFluid "${filename}_PFEM" + write::RenameFileInModel "$filename.mdpa" "[dict get $mdpa_names PfemFluid].mdpa" + + ShallowWater::write::Init + ShallowWater::write::SetCoordinatesByGroups 1 + write::writeAppMDPA ShallowWater + dict set mdpa_names ShallowWater "${filename}_SW" + write::RenameFileInModel "$filename.mdpa" "[dict get $mdpa_names ShallowWater].mdpa" +} diff --git a/kratos.gid/apps/PfemSw/write/writeProjectParameters.tcl b/kratos.gid/apps/PfemSw/write/writeProjectParameters.tcl new file mode 100644 index 000000000..56dff0dfb --- /dev/null +++ b/kratos.gid/apps/PfemSw/write/writeProjectParameters.tcl @@ -0,0 +1,47 @@ +# Project Parameters +proc ::PfemSw::write::getParametersDict { } { + set projectParametersDict [dict create] + + return $projectParametersDict +} + +proc ::PfemSw::write::writeParametersEvent { } { + set projectParametersDict [getParametersDict] + InitExternalProjectParameters + write::WriteJSON $PfemSw::write::pfem_project_parameters + write::WriteJSON $PfemSw::write::sw_project_parameters +} + +proc ::PfemSw::write::GetProcessesDict { } { + set processes_dict [dict create] + + return $processes_dict +} + +proc ::PfemSw::write::GetOutputProcessesDict { } { + set output_processes_dict [dict create] + + return $output_processes_dict +} + +proc ::PfemSw::write::UpdateUniqueNames { appid } { + set unList [list "Results"] + foreach un $unList { + set current_un [apps::getAppUniqueName $appid $un] + spdAux::setRoute $un [spdAux::getRoute $current_un] + } +} + +proc ::PfemSw::write::InitExternalProjectParameters { } { + # Pfem Fluid section + UpdateUniqueNames PfemFluid + apps::setActiveAppSoft PfemFluid + set PfemSw::write::pfem_project_parameters [PfemFluid::write::getParametersDict] + + # Shallow water section + UpdateUniqueNames ShallowWater + apps::setActiveAppSoft ShallowWater + set PfemSw::write::sw_project_parameters [ShallowWater::write::getParametersDict] + + apps::setActiveAppSoft PfemSw +} \ No newline at end of file diff --git a/kratos.gid/apps/PfemSw/xml/Main.spd b/kratos.gid/apps/PfemSw/xml/Main.spd new file mode 100644 index 000000000..875cc0430 --- /dev/null +++ b/kratos.gid/apps/PfemSw/xml/Main.spd @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/kratos.gid/apps/PfemSw/xml/XmlController.tcl b/kratos.gid/apps/PfemSw/xml/XmlController.tcl new file mode 100644 index 000000000..046f0479d --- /dev/null +++ b/kratos.gid/apps/PfemSw/xml/XmlController.tcl @@ -0,0 +1,49 @@ +namespace eval ::PfemSw::xml { + namespace path ::PfemSw + Kratos::AddNamespace [namespace current] + + # Namespace variables declaration + variable dir +} + +proc ::PfemSw::xml::Init { } { + # Namespace variables initialization + variable dir + Model::InitVariables dir $::PfemSw::dir + + # Model::ForgetSolutionStrategies + # Model::getSolutionStrategies "../../Fluid/xml/Strategies.xml" + # Model::getSolutionStrategies "../../Structural/xml/Strategies.xml" + # Model::ForgetSolutionStrategy Eigen + # Model::getSolutionStrategies Strategies.xml + # Model::getConditions Conditions.xml + + # Model::ForgetSolvers + # Model::getSolvers "../../Common/xml/Solvers.xml" + # Model::getSolvers "../../Structural/xml/Solvers.xml" + # Model::getSolvers Coupling_solvers.xml +} + +proc ::PfemSw::xml::getUniqueName {name} { + return [::PfemSw::GetAttribute prefix]${name} +} + +proc ::PfemSw::xml::MultiAppEvent {args} { + if {$args eq "init"} { + catch {::Structural::xml::MultiAppEvent init} + } +} + + +proc ::PfemSw::xml::CustomTree { args } { + PfemSw::write::UpdateUniqueNames PfemFluid + apps::setActiveAppSoft PfemFluid + PfemFluid::xml::CustomTree + + PfemSw::write::UpdateUniqueNames SW + apps::setActiveAppSoft SW + SW::xml::CustomTree + + PfemSw::write::UpdateUniqueNames PfemSw + apps::setActiveAppSoft PfemSw +} From 7c805972bdef77775b76cc5ac7dae9c32ee46884 Mon Sep 17 00:00:00 2001 From: migelmaso Date: Fri, 2 Sep 2022 16:23:48 +0200 Subject: [PATCH 02/12] register in pfem launcher --- kratos.gid/apps/PfemLauncher/app.json | 2 +- kratos.gid/apps/PfemLauncher/start.tcl | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/kratos.gid/apps/PfemLauncher/app.json b/kratos.gid/apps/PfemLauncher/app.json index 1a10a5680..b1a73fc46 100644 --- a/kratos.gid/apps/PfemLauncher/app.json +++ b/kratos.gid/apps/PfemLauncher/app.json @@ -6,7 +6,7 @@ ], "start_script":"::PfemLauncher::Init", "requeriments":{ - "apps_exist":["PfemFluid", "DEMPFEM", "PfemThermic"], + "apps_exist":["PfemFluid", "DEMPFEM", "PfemThermic", "PfemSw"], "minimum_gid_version":"15.1.3d" }, "permissions": { diff --git a/kratos.gid/apps/PfemLauncher/start.tcl b/kratos.gid/apps/PfemLauncher/start.tcl index e94b55f93..911d9141b 100644 --- a/kratos.gid/apps/PfemLauncher/start.tcl +++ b/kratos.gid/apps/PfemLauncher/start.tcl @@ -7,7 +7,7 @@ namespace eval ::PfemLauncher { proc ::PfemLauncher::Init { app } { variable available_apps - set available_apps [list PfemFluid DEMPFEM PfemThermic] + set available_apps [list PfemFluid DEMPFEM PfemThermic PfemSw] # Allow to open the tree set ::spdAux::TreeVisibility 0 From 90556ecccc66dece733f92bf2f8a1aec88585d28 Mon Sep 17 00:00:00 2001 From: migelmaso Date: Fri, 2 Sep 2022 16:23:58 +0200 Subject: [PATCH 03/12] register in kratos --- kratos.gid/kratos_default.spd | 1 + 1 file changed, 1 insertion(+) diff --git a/kratos.gid/kratos_default.spd b/kratos.gid/kratos_default.spd index 044f736f5..df6fae026 100644 --- a/kratos.gid/kratos_default.spd +++ b/kratos.gid/kratos_default.spd @@ -22,6 +22,7 @@ + From 58d80cfdb21f9d1602b1d935b4099601257a8b15 Mon Sep 17 00:00:00 2001 From: migelmaso Date: Fri, 2 Sep 2022 16:39:17 +0200 Subject: [PATCH 04/12] debugging --- kratos.gid/apps/PfemSw/xml/Procs.spd | 8 ++++++++ kratos.gid/apps/PfemSw/xml/XmlController.tcl | 4 ++-- 2 files changed, 10 insertions(+), 2 deletions(-) create mode 100644 kratos.gid/apps/PfemSw/xml/Procs.spd diff --git a/kratos.gid/apps/PfemSw/xml/Procs.spd b/kratos.gid/apps/PfemSw/xml/Procs.spd new file mode 100644 index 000000000..96d7cf417 --- /dev/null +++ b/kratos.gid/apps/PfemSw/xml/Procs.spd @@ -0,0 +1,8 @@ + + + + + + diff --git a/kratos.gid/apps/PfemSw/xml/XmlController.tcl b/kratos.gid/apps/PfemSw/xml/XmlController.tcl index 046f0479d..ccb5e57a4 100644 --- a/kratos.gid/apps/PfemSw/xml/XmlController.tcl +++ b/kratos.gid/apps/PfemSw/xml/XmlController.tcl @@ -41,8 +41,8 @@ proc ::PfemSw::xml::CustomTree { args } { PfemFluid::xml::CustomTree PfemSw::write::UpdateUniqueNames SW - apps::setActiveAppSoft SW - SW::xml::CustomTree + apps::setActiveAppSoft ShallowWater + ShallowWater::xml::CustomTree PfemSw::write::UpdateUniqueNames PfemSw apps::setActiveAppSoft PfemSw From 72027e75b2fb8b04ee2b1e1a209a92c4ec168069 Mon Sep 17 00:00:00 2001 From: migelmaso Date: Tue, 6 Sep 2022 10:30:33 +0200 Subject: [PATCH 05/12] add coupling conditions --- kratos.gid/apps/PfemSw/images/coupling.png | Bin 0 -> 422 bytes .../apps/PfemSw/xml/CouplingConditions.xml | 64 ++++++++++++++++++ kratos.gid/apps/PfemSw/xml/Main.spd | 2 + .../PfemSw/xml/PfemCouplingConditions.spd | 4 ++ kratos.gid/apps/PfemSw/xml/Processes.xml | 41 +++++++++++ .../apps/PfemSw/xml/SwCouplingConditions.spd | 4 ++ kratos.gid/apps/PfemSw/xml/XmlController.tcl | 3 + 7 files changed, 118 insertions(+) create mode 100644 kratos.gid/apps/PfemSw/images/coupling.png create mode 100644 kratos.gid/apps/PfemSw/xml/CouplingConditions.xml create mode 100644 kratos.gid/apps/PfemSw/xml/PfemCouplingConditions.spd create mode 100644 kratos.gid/apps/PfemSw/xml/Processes.xml create mode 100644 kratos.gid/apps/PfemSw/xml/SwCouplingConditions.spd diff --git a/kratos.gid/apps/PfemSw/images/coupling.png b/kratos.gid/apps/PfemSw/images/coupling.png new file mode 100644 index 0000000000000000000000000000000000000000..628d643f7ee5d8d1794fc3cbed3b9d7825354c05 GIT binary patch literal 422 zcmeAS@N?(olHy`uVBq!ia0vp^f*{Pn3?z9rZ$AN~BuiW)N`mv#O3D+9QW+dm@{>{( zJaZG%Q-e|yQz{EjrrH1%B?S0{xc>kDe`5cd_3MuX1-2OKCV%|+b=S_**RDQTyZT^r z<05kEJ2i$||!Ufq7? z#h*FP-`z`HX<7VkRZ_yM4Q(ogGej@smG0Kw-_gObis@C@!ekTW0I9}}?^g3B+<2I_ z;pmOeg4HaEC%6u0C53jz?vk2Yv$E0o%!ATj_c|t6cWjObNcyz2A?aNzkMFl73$j0~ s{@r@kd+(%NvDtfH);gx-{Si%IP+ZF{Ec#l>80dBePgg&ebxsLQ0A_pEa{vGU literal 0 HcmV?d00001 diff --git a/kratos.gid/apps/PfemSw/xml/CouplingConditions.xml b/kratos.gid/apps/PfemSw/xml/CouplingConditions.xml new file mode 100644 index 000000000..4da1d58a9 --- /dev/null +++ b/kratos.gid/apps/PfemSw/xml/CouplingConditions.xml @@ -0,0 +1,64 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/kratos.gid/apps/PfemSw/xml/Main.spd b/kratos.gid/apps/PfemSw/xml/Main.spd index 875cc0430..cd2c15104 100644 --- a/kratos.gid/apps/PfemSw/xml/Main.spd +++ b/kratos.gid/apps/PfemSw/xml/Main.spd @@ -6,6 +6,7 @@ + @@ -21,6 +22,7 @@ + diff --git a/kratos.gid/apps/PfemSw/xml/PfemCouplingConditions.spd b/kratos.gid/apps/PfemSw/xml/PfemCouplingConditions.spd new file mode 100644 index 000000000..3ffb98786 --- /dev/null +++ b/kratos.gid/apps/PfemSw/xml/PfemCouplingConditions.spd @@ -0,0 +1,4 @@ + + + + diff --git a/kratos.gid/apps/PfemSw/xml/Processes.xml b/kratos.gid/apps/PfemSw/xml/Processes.xml new file mode 100644 index 000000000..27c6cbe40 --- /dev/null +++ b/kratos.gid/apps/PfemSw/xml/Processes.xml @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/kratos.gid/apps/PfemSw/xml/SwCouplingConditions.spd b/kratos.gid/apps/PfemSw/xml/SwCouplingConditions.spd new file mode 100644 index 000000000..f70b848e1 --- /dev/null +++ b/kratos.gid/apps/PfemSw/xml/SwCouplingConditions.spd @@ -0,0 +1,4 @@ + + + + diff --git a/kratos.gid/apps/PfemSw/xml/XmlController.tcl b/kratos.gid/apps/PfemSw/xml/XmlController.tcl index ccb5e57a4..47659de22 100644 --- a/kratos.gid/apps/PfemSw/xml/XmlController.tcl +++ b/kratos.gid/apps/PfemSw/xml/XmlController.tcl @@ -11,6 +11,9 @@ proc ::PfemSw::xml::Init { } { variable dir Model::InitVariables dir $::PfemSw::dir + Model::getConditions CouplingConditions.xml + Model::getProcesses Processes.xml + # Model::ForgetSolutionStrategies # Model::getSolutionStrategies "../../Fluid/xml/Strategies.xml" # Model::getSolutionStrategies "../../Structural/xml/Strategies.xml" From bdb1724e51cf6ea81fd814b2794fe57aa1b3b2ab Mon Sep 17 00:00:00 2001 From: migelmaso Date: Wed, 7 Sep 2022 17:16:47 +0200 Subject: [PATCH 06/12] update logo --- kratos.gid/apps/PfemSw/images/logo.png | Bin 10627 -> 9795 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/kratos.gid/apps/PfemSw/images/logo.png b/kratos.gid/apps/PfemSw/images/logo.png index be403b263e1d2b928e5264f85768b476ac9e7625..d4c65fe21c2874c38ff7360198920ad2c5847f40 100644 GIT binary patch literal 9795 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 m3XCyMnT^}9u6V~ii{)0d!T(C9F;Shp|D5W&1 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 From 51524c558d620da03ec4fec1bf7af7f2fded2f90 Mon Sep 17 00:00:00 2001 From: migelmaso Date: Wed, 7 Sep 2022 17:16:58 +0200 Subject: [PATCH 07/12] add coupling settings --- kratos.gid/apps/PfemSw/xml/Processes.xml | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/kratos.gid/apps/PfemSw/xml/Processes.xml b/kratos.gid/apps/PfemSw/xml/Processes.xml index 27c6cbe40..4cfafe7de 100644 --- a/kratos.gid/apps/PfemSw/xml/Processes.xml +++ b/kratos.gid/apps/PfemSw/xml/Processes.xml @@ -8,6 +8,16 @@ python_module="depth_integration_output_process" kratos_module="KratosMultiphysics.ShallowWaterApplication.coupling"> + + + + + + + + + + @@ -17,6 +27,17 @@ python_module="depth_integration_input_process" kratos_module="KratosMultiphysics.ShallowWaterApplication.coupling"> + + + + + + + + + + + From 2084bc7722cb0b2c8e4efcffc9b7fbc0ecabf7cf Mon Sep 17 00:00:00 2001 From: migelmaso Date: Wed, 7 Sep 2022 17:23:32 +0200 Subject: [PATCH 08/12] add useful comments --- kratos.gid/apps/PfemSw/xml/Processes.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/kratos.gid/apps/PfemSw/xml/Processes.xml b/kratos.gid/apps/PfemSw/xml/Processes.xml index 4cfafe7de..79ec564b5 100644 --- a/kratos.gid/apps/PfemSw/xml/Processes.xml +++ b/kratos.gid/apps/PfemSw/xml/Processes.xml @@ -15,9 +15,9 @@ - + - + From a8fc6002bcf5a087bbacb4f7b6e826142110f751 Mon Sep 17 00:00:00 2001 From: migelmaso Date: Thu, 8 Sep 2022 12:52:58 +0200 Subject: [PATCH 09/12] definition of coupling processes --- kratos.gid/apps/PfemSw/write/write.tcl | 14 +++++---- kratos.gid/apps/PfemSw/xml/Processes.xml | 37 ++++++++++++------------ 2 files changed, 27 insertions(+), 24 deletions(-) diff --git a/kratos.gid/apps/PfemSw/write/write.tcl b/kratos.gid/apps/PfemSw/write/write.tcl index dda44a2d8..91c46f187 100644 --- a/kratos.gid/apps/PfemSw/write/write.tcl +++ b/kratos.gid/apps/PfemSw/write/write.tcl @@ -1,7 +1,7 @@ namespace eval ::PfemSw::write { namespace path ::PfemSw Kratos::AddNamespace [namespace current] - + variable pfem_project_parameters variable sw_project_parameters variable mdpa_names @@ -12,7 +12,7 @@ proc ::PfemSw::write::Init { } { variable sw_project_parameters set pfem_project_parameters [dict create ] set sw_project_parameters [dict create ] - + variable mdpa_names set mdpa_names [dict create ] } @@ -21,17 +21,19 @@ proc ::PfemSw::write::Init { } { proc ::PfemSw::write::writeModelPartEvent { } { variable mdpa_names set filename [Kratos::GetModelName] - + + # check folder exists + PfemFluid::write::Init PfemFluid::write::InitConditionsMap PfemFluid::write::SetCoordinatesByGroups 1 write::writeAppMDPA PfemFluid dict set mdpa_names PfemFluid "${filename}_PFEM" - write::RenameFileInModel "$filename.mdpa" "[dict get $mdpa_names PfemFluid].mdpa" - + write::RenameFileInModel "$filename.mdpa" "pfem/[dict get $mdpa_names PfemFluid].mdpa" + ShallowWater::write::Init ShallowWater::write::SetCoordinatesByGroups 1 write::writeAppMDPA ShallowWater dict set mdpa_names ShallowWater "${filename}_SW" - write::RenameFileInModel "$filename.mdpa" "[dict get $mdpa_names ShallowWater].mdpa" + write::RenameFileInModel "$filename.mdpa" "sw/[dict get $mdpa_names ShallowWater].mdpa" } diff --git a/kratos.gid/apps/PfemSw/xml/Processes.xml b/kratos.gid/apps/PfemSw/xml/Processes.xml index 79ec564b5..7d6046311 100644 --- a/kratos.gid/apps/PfemSw/xml/Processes.xml +++ b/kratos.gid/apps/PfemSw/xml/Processes.xml @@ -8,16 +8,16 @@ python_module="depth_integration_output_process" kratos_module="KratosMultiphysics.ShallowWaterApplication.coupling"> - - - - + + + + - - - - + + + + @@ -27,17 +27,18 @@ python_module="depth_integration_input_process" kratos_module="KratosMultiphysics.ShallowWaterApplication.coupling"> - - - - - - - - + + + + + + + + + - - + + From 69563f61a0f4370435634ac9b15f8470721adbb3 Mon Sep 17 00:00:00 2001 From: Javier Garate Date: Sun, 20 Jul 2025 12:04:45 +0200 Subject: [PATCH 10/12] work only in 2D --- kratos.gid/apps/PfemSw/app.json | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/kratos.gid/apps/PfemSw/app.json b/kratos.gid/apps/PfemSw/app.json index 4edb9b099..a78d2ce27 100644 --- a/kratos.gid/apps/PfemSw/app.json +++ b/kratos.gid/apps/PfemSw/app.json @@ -10,8 +10,7 @@ "KratosMappingApplication" ], "dimensions": [ - "2D", - "3D" + "2D" ], "script_files": [ "start.tcl", From da3b4a47e64b1ff45594ee44e312d251b76096d7 Mon Sep 17 00:00:00 2001 From: Javier Garate Date: Sun, 20 Jul 2025 12:10:16 +0200 Subject: [PATCH 11/12] hotfix load --- kratos.gid/apps/PfemSw/app.json | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/kratos.gid/apps/PfemSw/app.json b/kratos.gid/apps/PfemSw/app.json index a78d2ce27..fdd7cbd95 100644 --- a/kratos.gid/apps/PfemSw/app.json +++ b/kratos.gid/apps/PfemSw/app.json @@ -19,11 +19,8 @@ "write/writeProjectParameters.tcl" ], "start_script": "::PfemSw::Init", - "requeriments": { - "apps": [ - "PfemFluid", - "ShallowWater" - ], + "requirements":{ + "apps":["ShallowWater", "PfemFluid"], "minimum_gid_version": "15.1.3d" }, "permissions": { From 3a20a5e10f8d06ff9c0b4615b973a8c2e8647d9b Mon Sep 17 00:00:00 2001 From: Javier Garate Date: Sun, 20 Jul 2025 12:33:21 +0200 Subject: [PATCH 12/12] disable some nodal results --- kratos.gid/apps/PfemSw/xml/XmlController.tcl | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/kratos.gid/apps/PfemSw/xml/XmlController.tcl b/kratos.gid/apps/PfemSw/xml/XmlController.tcl index 47659de22..df3be5b63 100644 --- a/kratos.gid/apps/PfemSw/xml/XmlController.tcl +++ b/kratos.gid/apps/PfemSw/xml/XmlController.tcl @@ -49,4 +49,17 @@ proc ::PfemSw::xml::CustomTree { args } { PfemSw::write::UpdateUniqueNames PfemSw apps::setActiveAppSoft PfemSw + + + + # remove Nodal results from PFEM Fluid Data / Results / Nodal Results + set pfem_base_root [[customlib::GetBaseRoot] selectNodes "//container\[@n = 'PfemFluid'\]"] + set pfem_nodal_results_node [$pfem_base_root selectNodes "//container\[@un = 'NodalResults'\]"] + + set pfem_nodal_results_delete_list [list "InitialWaterLevel" "InitialPerturbation" "Topography" "MOMENTUM" "FREE_SURFACE_ELEVATION" "INLET" "ANGULAR_VELOCITY"] + foreach name $pfem_nodal_results_delete_list { + set result_node [$pfem_nodal_results_node selectNodes "./value\[@n = '$name'\]"] + if {$result_node ne "" } {$result_node setAttribute "state" "hidden"} + if {$result_node ne "" } {$result_node setAttribute "v" "No"} + } }