From 833a8cccbc324498658bf0da2659960b03d7d713 Mon Sep 17 00:00:00 2001 From: Josep Maria Date: Wed, 26 Jul 2017 17:15:59 +0200 Subject: [PATCH 01/17] trying to write json format for materials is not working as expected --- kratos.gid/apps/Solid/write/write.tcl | 90 ++++++++++++++------------- 1 file changed, 46 insertions(+), 44 deletions(-) diff --git a/kratos.gid/apps/Solid/write/write.tcl b/kratos.gid/apps/Solid/write/write.tcl index f0bf01184..fca53b84b 100644 --- a/kratos.gid/apps/Solid/write/write.tcl +++ b/kratos.gid/apps/Solid/write/write.tcl @@ -1,4 +1,5 @@ namespace eval Solid::write { + variable mat_dict variable validApps variable ConditionsDictGroupIterators variable NodalConditionsGroup @@ -7,7 +8,8 @@ namespace eval Solid::write { proc Solid::write::Init { } { # Namespace variables inicialization - + variable mat_dict + set mat_dict "" variable ConditionsDictGroupIterators variable NodalConditionsGroup set ConditionsDictGroupIterators [dict create] @@ -120,12 +122,12 @@ proc Solid::write::getLastConditionId { } { proc Solid::write::WriteMaterialsFile { } { variable validApps - # materials.json - # set materials_dict [getPropertiesList SLParts "Materials.json"] + set filename "Materials.json" + set mats_json [getPropertiesList SLParts] - # write::OpenFile $filename - # write::WriteJSON $mats_json - # write::CloseFile + write::OpenFile $filename + write::WriteJSON $mats_json + write::CloseFile write::OpenFile "materials.py" @@ -156,48 +158,48 @@ def AssignMaterial(Properties): } -# proc Solid::write::getPropertiesList {parts_un} { -# variable mat_dict -# set props_dict [dict create] -# set props [list ] +proc Solid::write::getPropertiesList {parts_un} { + variable mat_dict + set props_dict [dict create] + set props [list ] -# set root [customlib::GetBaseRoot] - -# set xp1 "[spdAux::getRoute $parts_un]/group" -# foreach gNode [$root selectNodes $xp1] { -# set element_id [get_domnode_attribute [$gNode selectNodes "value\[@n = 'Element'\]"] v] -# set element [Model::getElement $element_id] -# set group [get_domnode_attribute $gNode n] -# set sub_model_part [write::getMeshId Parts $group] -# if { [dict exists $mat_dict $group] } { -# set mid [dict get $mat_dict $group MID] -# set prop_dict [dict create] -# dict set prop_dict "model_part_name" $sub_model_part -# dict set prop_dict "properties_id" $mid -# set constitutive_law [dict get $mat_dict $group ConstitutiveLaw] -# set exclusionList [list "MID" "APPID" "ConstitutiveLaw" "Material" "Element"] -# set variables_dict [dict create] -# foreach prop [dict keys [dict get $mat_dict $group] ] { -# if {$prop ni $exclusionList} { -# dict set variables_list $prop [write::getFormattedValue [dict get $mat_dict $group $prop]] -# } -# } -# set material_dict [dict create] -# set const_law_application [[Model::getConstitutiveLaw $constitutive_law] getAttribute "ImplementedInApplication"] -# set const_law_fullname [join [list "KratosMultiphysics" $const_law_application $constitutive_law] "."] -# dict set material_dict constitutive_law [dict create name $const_law_fullname] -# dict set material_dict Variables $variables_list -# dict set material_dict Tables dictnull -# dict set prop_dict Material $material_dict + #set doc $gid_groups_conds::doc + #set root [$doc documentElement] + set root [customlib::GetBaseRoot] + + set xp1 "[spdAux::getRoute $parts_un]/group" + foreach gNode [$root selectNodes $xp1] { + set group [get_domnode_attribute $gNode n] + set sub_model_part [write::getMeshId Parts $group] + if { [dict exists $mat_dict $group] } { + set mid [dict get $mat_dict $group MID] + set prop_dict [dict create] + dict set prop_dict "model_part_name" $sub_model_part + dict set prop_dict "properties_id" $mid + set constitutive_law [dict get $mat_dict $group ConstitutiveLaw] + set exclusionList [list "MID" "APPID" "ConstitutiveLaw" "Material" "Element"] + set variables_dict [dict create] + foreach prop [dict keys [dict get $mat_dict $group] ] { + if {$prop ni $exclusionList} { + dict set variables_list $prop [write::getFormattedValue [dict get $mat_dict $group $prop]] + } + } + set material_dict [dict create] + set const_law_application [[Model::getConstitutiveLaw $constitutive_law] getAttribute "ImplementedInApplication"] + set const_law_fullname [join [list "KratosMultiphysics" $const_law_application $constitutive_law] "."] + dict set material_dict constitutive_law [dict create name $const_law_fullname] + dict set material_dict Variables $variables_list + dict set material_dict Tables dictnull + dict set prop_dict Parameters $material_dict -# lappend props $prop_dict -# } + lappend props $prop_dict + } -# } + } -# dict set props_dict properties $props -# return $props_dict -# } + dict set props_dict material_models_list $props + return $props_dict +} proc Solid::write::GetUsedElements { {get "Objects"} } { set xp1 "[spdAux::getRoute SLParts]/group" From ee8d1b60026247ef289f8ef595afa0a9cd1db8f1 Mon Sep 17 00:00:00 2001 From: Josep Maria Date: Thu, 17 Aug 2017 15:25:18 +0200 Subject: [PATCH 02/17] adding new conditions --- kratos.gid/apps/Pfem/images/logo.png | Bin 6484 -> 19177 bytes kratos.gid/apps/Solid/images/logo.png | Bin 7468 -> 3160 bytes kratos.gid/apps/Solid/xml/Conditions.xml | 219 ++++++++++++++++++++++- kratos.gid/apps/Solid/xml/Processes.xml | 4 +- 4 files changed, 215 insertions(+), 8 deletions(-) diff --git a/kratos.gid/apps/Pfem/images/logo.png b/kratos.gid/apps/Pfem/images/logo.png index e84a7a1d45f777803d247d2fb10dabb0feedca09..4d0514b9d0b880796d6735afd37979864a5486da 100644 GIT binary patch literal 19177 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 Eg4rYl#{d8T delta 6404 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 SPCyy}0000 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 + help="Self weight application by means of the AssignModulusAndDirectionToNodesProcess" units="m/s^2" unit_magnitude="Acceleration"> @@ -23,7 +23,7 @@ ImplementedInApplication="SolidMechanicsApplication" MinimumKratosVersion="9000" ProductionReady="ProductionReady" WorkingSpaceDimension="2D" LocalSpaceDimension="0" RequiresLocalAxes="False" LargeDeformation="False" ElementType="Line,Surface" ProcessName="AssignModulusAndDirectionToNodesProcess" VariableName="VOLUME_ACCELERATION" - help="Self weight application by means of the AssignModulusAndDirectionToNodesProcess in the core" units="m/s^2" unit_magnitude="Acceleration"> + help="Self weight application by means of the AssignModulusAndDirectionToNodesProcess" units="m/s^2" unit_magnitude="Acceleration"> @@ -41,7 +41,7 @@ ImplementedInApplication="SolidMechanicsApplication" MinimumKratosVersion="9000" ProductionReady="ProductionReady" WorkingSpaceDimension="2Da" LocalSpaceDimension="0" RequiresLocalAxes="False" LargeDeformation="False" ElementType="Line,Surface" ProcessName="AssignModulusAndDirectionToNodesProcess" VariableName="VOLUME_ACCELERATION" - help="Self weight application by means of the AssignModulusAndDirectionToNodesProcess in the core" units="m/s^2" unit_magnitude="Acceleration"> + help="Self weight application by means of the AssignModulusAndDirectionToNodesProcess" units="m/s^2" unit_magnitude="Acceleration"> @@ -58,7 +58,7 @@ @@ -72,8 +72,8 @@ + ElementType="Point" ProcessName="AssignModulusAndDirectionToConditionsProcess" help="Point load application by means of the AssignModulusAndDirectionToConditionsProcess" + units="N" unit_magnitude="F" VariableName="POINT_LOAD"> @@ -130,6 +130,22 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/kratos.gid/apps/Solid/xml/Processes.xml b/kratos.gid/apps/Solid/xml/Processes.xml index c1f418bb7..364683238 100644 --- a/kratos.gid/apps/Solid/xml/Processes.xml +++ b/kratos.gid/apps/Solid/xml/Processes.xml @@ -21,7 +21,7 @@ kratos_module="KratosMultiphysics.SolidMechanicsApplication" help="This process fixes the given scalar variable"> - + @@ -58,7 +58,7 @@ - + From f5f1c8b7c749d29216c66d01279e21264ddcb952 Mon Sep 17 00:00:00 2001 From: Josep Maria Date: Thu, 24 Aug 2017 00:59:00 +0200 Subject: [PATCH 03/17] inserting beam elements --- kratos.gid/apps/Solid/xml/Conditions.xml | 51 +++++ .../apps/Solid/xml/ConstitutiveLaws.xml | 200 ++++++++++++++++- kratos.gid/apps/Solid/xml/Elements.xml | 211 +++++++++++++++++- kratos.gid/apps/Solid/xml/GetFromXML.tcl | 7 +- kratos.gid/apps/Solid/xml/Strategies.xml | 16 +- 5 files changed, 462 insertions(+), 23 deletions(-) diff --git a/kratos.gid/apps/Solid/xml/Conditions.xml b/kratos.gid/apps/Solid/xml/Conditions.xml index 82704d7b4..97458428e 100644 --- a/kratos.gid/apps/Solid/xml/Conditions.xml +++ b/kratos.gid/apps/Solid/xml/Conditions.xml @@ -409,4 +409,55 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/kratos.gid/apps/Solid/xml/ConstitutiveLaws.xml b/kratos.gid/apps/Solid/xml/ConstitutiveLaws.xml index c4f5a94e4..24d8f5ce8 100644 --- a/kratos.gid/apps/Solid/xml/ConstitutiveLaws.xml +++ b/kratos.gid/apps/Solid/xml/ConstitutiveLaws.xml @@ -47,18 +47,208 @@ - + + - - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/kratos.gid/apps/Solid/xml/Elements.xml b/kratos.gid/apps/Solid/xml/Elements.xml index 99b7e6f00..069742b19 100644 --- a/kratos.gid/apps/Solid/xml/Elements.xml +++ b/kratos.gid/apps/Solid/xml/Elements.xml @@ -531,15 +531,48 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + help="This element implements a small displacement beam" ElementType="Beam" RotationDofs="True" SolutionType="Static"> + @@ -550,7 +583,73 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -559,21 +658,117 @@ - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ElementType="Shell" RotationDofs="True" > diff --git a/kratos.gid/apps/Solid/xml/GetFromXML.tcl b/kratos.gid/apps/Solid/xml/GetFromXML.tcl index d9719151e..a6cf6d0d3 100644 --- a/kratos.gid/apps/Solid/xml/GetFromXML.tcl +++ b/kratos.gid/apps/Solid/xml/GetFromXML.tcl @@ -16,7 +16,6 @@ proc Solid::xml::Init { } { Model::getConditions Conditions.xml Model::getSolvers "../../Common/xml/Solvers.xml" - Model::ForgetElement BeamElement Model::ForgetElement SmallDisplacementBbarElement2D Model::ForgetElement SmallDisplacementBbarElement3D @@ -75,7 +74,11 @@ proc Solid::xml::ProcCheckNodalConditionStateSolid {domNode args} { proc Solid::xml::ProcCheckGeometrySolid {domNode args} { set ret "surface" if {$::Model::SpatialDimension eq "3D"} { - set ret "surface,volume" + set ret "line,surface,volume" + } elseif {$::Model::SpatialDimension eq "2D"} { + set ret "line,surface" + } elseif {$::Model::SpatialDimension eq "1D"} { + set ret "line" } return $ret } diff --git a/kratos.gid/apps/Solid/xml/Strategies.xml b/kratos.gid/apps/Solid/xml/Strategies.xml index 8afd731b4..fa916c48b 100644 --- a/kratos.gid/apps/Solid/xml/Strategies.xml +++ b/kratos.gid/apps/Solid/xml/Strategies.xml @@ -48,8 +48,8 @@ - - + + @@ -58,21 +58,21 @@ - + - - + + - + - + From 0b80d96a7a5db56df6d44188e34f9068dedd262e Mon Sep 17 00:00:00 2001 From: Josep Maria Date: Thu, 24 Aug 2017 10:08:09 +0200 Subject: [PATCH 04/17] analysing strategy changes --- kratos.gid/apps/Solid/xml/Strategies.xml | 279 +++++++++++------------ 1 file changed, 132 insertions(+), 147 deletions(-) diff --git a/kratos.gid/apps/Solid/xml/Strategies.xml b/kratos.gid/apps/Solid/xml/Strategies.xml index fa916c48b..23962b846 100644 --- a/kratos.gid/apps/Solid/xml/Strategies.xml +++ b/kratos.gid/apps/Solid/xml/Strategies.xml @@ -10,33 +10,29 @@ - - + + + - - - - - - - - - - + + + + + - - - - - + + + + + @@ -44,39 +40,39 @@ - + - - - - - - + + + + + + - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + - + - - - - - - + + + + + + - - - - - - - - - - - - - + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + - + - - - - - - + + + + + + - - - - - - - - - - - + + + + + + + + + + + From fb97179b8483612db155ead8c17515f6d8bcc048 Mon Sep 17 00:00:00 2001 From: josep-m-carbonell Date: Thu, 24 Aug 2017 17:34:41 +0200 Subject: [PATCH 05/17] prediction level 1 by default for explicit strategy --- kratos.gid/apps/Solid/xml/Strategies.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/kratos.gid/apps/Solid/xml/Strategies.xml b/kratos.gid/apps/Solid/xml/Strategies.xml index 23962b846..a28e95ecf 100644 --- a/kratos.gid/apps/Solid/xml/Strategies.xml +++ b/kratos.gid/apps/Solid/xml/Strategies.xml @@ -79,7 +79,7 @@ ImplementedInApplication="SolidMechanicsApplication" ImplementedInPythonFile="solid_mechanics_explicit_dynamic_solver" MinimumKratosVersion="8500" App="Solid" - ProductionReady="Developer" + ProductionReady="ProductionReady" help="Default solver Super LU"> @@ -100,7 +100,7 @@ help="Maximum delta time allowed"/> - From 2bc15af36e93f73a3454747dcd83129fc287b46e Mon Sep 17 00:00:00 2001 From: josep-m-carbonell Date: Thu, 24 Aug 2017 21:00:19 +0200 Subject: [PATCH 06/17] domain_size to dimension --- kratos.gid/apps/Pfem/python/script.py | 3 ++- .../apps/Pfem/write/ProjectParameters.json | 2 +- .../Pfem/write/writeProjectParameters.tcl | 2 +- kratos.gid/apps/Solid/python/KratosSolid.py | 3 ++- .../apps/Solid/python/KratosSolidMPI.py | 5 ++-- .../Solid/write/writeProjectParameters.tcl | 6 ++--- kratos.gid/apps/Solid/xml/StageInfo.spd | 4 +-- kratos.gid/apps/Solid/xml/Strategies.xml | 25 ++++++++++++++++++- 8 files changed, 38 insertions(+), 12 deletions(-) diff --git a/kratos.gid/apps/Pfem/python/script.py b/kratos.gid/apps/Pfem/python/script.py index 1678abb10..573ec7722 100755 --- a/kratos.gid/apps/Pfem/python/script.py +++ b/kratos.gid/apps/Pfem/python/script.py @@ -84,7 +84,8 @@ def GetParallelSize(): # Defining the model_part main_model_part = KratosMultiphysics.ModelPart(ProjectParameters["problem_data"]["model_part_name"].GetString()) -main_model_part.ProcessInfo.SetValue(KratosMultiphysics.DOMAIN_SIZE, ProjectParameters["problem_data"]["domain_size"].GetInt()) +main_model_part.ProcessInfo.SetValue(KratosMultiphysics.DIMENSION, ProjectParameters["problem_data"]["dimension"].GetInt()) +main_model_part.ProcessInfo.SetValue(KratosMultiphysics.DOMAIN_SIZE, ProjectParameters["problem_data"]["dimension"].GetInt()) main_model_part.ProcessInfo.SetValue(KratosMultiphysics.DELTA_TIME, ProjectParameters["problem_data"]["time_step"].GetDouble()) main_model_part.ProcessInfo.SetValue(KratosMultiphysics.TIME, ProjectParameters["problem_data"]["start_time"].GetDouble()) if( ProjectParameters["problem_data"].Has("gravity_vector") ): diff --git a/kratos.gid/apps/Pfem/write/ProjectParameters.json b/kratos.gid/apps/Pfem/write/ProjectParameters.json index a0187ffde..030314b1b 100644 --- a/kratos.gid/apps/Pfem/write/ProjectParameters.json +++ b/kratos.gid/apps/Pfem/write/ProjectParameters.json @@ -2,7 +2,7 @@ "problem_data" : { "problem_name" : "problem_name", "model_part_name" : "Main Model", - "domain_size" : 3, + "dimension" : 3, "time_step" : 0.001, "start_time" : 0.0, "end_time" : 0.002, diff --git a/kratos.gid/apps/Pfem/write/writeProjectParameters.tcl b/kratos.gid/apps/Pfem/write/writeProjectParameters.tcl index b6518d7b2..112e604bd 100644 --- a/kratos.gid/apps/Pfem/write/writeProjectParameters.tcl +++ b/kratos.gid/apps/Pfem/write/writeProjectParameters.tcl @@ -48,7 +48,7 @@ proc Pfem::write::GetPFEM_ProblemDataDict { } { dict set problemDataDict model_part_name "Main Domain" set nDim $::Model::SpatialDimension set nDim [expr [string range [write::getValue nDim] 0 0] ] - dict set problemDataDict domain_size $nDim + dict set problemDataDict dimension $nDim dict set problemDataDict time_step [write::getValue PFEM_TimeParameters DeltaTime] dict set problemDataDict start_time [write::getValue PFEM_TimeParameters StartTime] diff --git a/kratos.gid/apps/Solid/python/KratosSolid.py b/kratos.gid/apps/Solid/python/KratosSolid.py index c27b821d6..fa5c7e4c2 100644 --- a/kratos.gid/apps/Solid/python/KratosSolid.py +++ b/kratos.gid/apps/Solid/python/KratosSolid.py @@ -58,7 +58,8 @@ def StopTimeMeasuring(time_ip, process, report): # Defining the model_part main_model_part = KratosMultiphysics.ModelPart(ProjectParameters["problem_data"]["model_part_name"].GetString()) -main_model_part.ProcessInfo.SetValue(KratosMultiphysics.DOMAIN_SIZE, ProjectParameters["problem_data"]["domain_size"].GetInt()) +main_model_part.ProcessInfo.SetValue(KratosMultiphysics.DIMENSION, ProjectParameters["problem_data"]["dimension"].GetInt()) +main_model_part.ProcessInfo.SetValue(KratosMultiphysics.DOMAIN_SIZE, ProjectParameters["problem_data"]["dimension"].GetInt()) main_model_part.ProcessInfo.SetValue(KratosMultiphysics.DELTA_TIME, ProjectParameters["problem_data"]["time_step"].GetDouble()) main_model_part.ProcessInfo.SetValue(KratosMultiphysics.TIME, ProjectParameters["problem_data"]["start_time"].GetDouble()) diff --git a/kratos.gid/apps/Solid/python/KratosSolidMPI.py b/kratos.gid/apps/Solid/python/KratosSolidMPI.py index cc15538dd..e04783355 100644 --- a/kratos.gid/apps/Solid/python/KratosSolidMPI.py +++ b/kratos.gid/apps/Solid/python/KratosSolidMPI.py @@ -61,8 +61,9 @@ def StopTimeMeasuring(time_ip, process, report): # Defining the model_part main_model_part = KratosMultiphysics.ModelPart(ProjectParameters["problem_data"]["model_part_name"].GetString()) -domain_size = ProjectParameters["problem_data"]["domain_size"].GetInt() -main_model_part.ProcessInfo.SetValue(KratosMultiphysics.DOMAIN_SIZE, domain_size) +dimension = ProjectParameters["problem_data"]["dimension"].GetInt() +main_model_part.ProcessInfo.SetValue(KratosMultiphysics.DIMENSION, dimension) +main_model_part.ProcessInfo.SetValue(KratosMultiphysics.DOMAIN_SIZE, dimension) main_model_part.ProcessInfo.SetValue(KratosMultiphysics.DELTA_TIME, ProjectParameters["problem_data"]["time_step"].GetDouble()) main_model_part.ProcessInfo.SetValue(KratosMultiphysics.TIME, ProjectParameters["problem_data"]["start_time"].GetDouble()) diff --git a/kratos.gid/apps/Solid/write/writeProjectParameters.tcl b/kratos.gid/apps/Solid/write/writeProjectParameters.tcl index 309498633..ae1870752 100644 --- a/kratos.gid/apps/Solid/write/writeProjectParameters.tcl +++ b/kratos.gid/apps/Solid/write/writeProjectParameters.tcl @@ -13,7 +13,7 @@ proc Solid::write::getParametersDict { } { dict set problemDataDict problem_name $model_name dict set problemDataDict model_part_name $model_part_name set nDim [expr [string range [write::getValue nDim] 0 0] ] - dict set problemDataDict domain_size $nDim + dict set problemDataDict dimension $nDim # Parallelization set paralleltype [write::getValue ParallelType] @@ -41,12 +41,12 @@ proc Solid::write::getParametersDict { } { set currentStrategyId [write::getValue SLSolStrat] set strategy_write_name [[::Model::GetSolutionStrategy $currentStrategyId] getAttribute "ImplementedInPythonFile"] dict set solverSettingsDict solver_type $strategy_write_name - #~ dict set solverSettingsDict domain_size [expr $nDim] + #~ dict set solverSettingsDict dimension [expr $nDim] dict set solverSettingsDict echo_level $echo_level dict set solverSettingsDict solution_type [write::getValue SLSoluType] if {$solutiontype eq "Static"} { - dict set solverSettingsDict analysis_type [write::getValue SLAnalysisType] + dict set solverSettingsDict scheme_type [write::getValue SLScheme] } elseif {$solutiontype eq "Dynamic"} { dict set solverSettingsDict time_integration_method [write::getValue SLSolStrat] dict set solverSettingsDict scheme_type [write::getValue SLScheme] diff --git a/kratos.gid/apps/Solid/xml/StageInfo.spd b/kratos.gid/apps/Solid/xml/StageInfo.spd index 38c357ceb..57de40111 100644 --- a/kratos.gid/apps/Solid/xml/StageInfo.spd +++ b/kratos.gid/apps/Solid/xml/StageInfo.spd @@ -2,7 +2,7 @@ - - + + diff --git a/kratos.gid/apps/Solid/xml/Strategies.xml b/kratos.gid/apps/Solid/xml/Strategies.xml index a28e95ecf..0f43559ed 100644 --- a/kratos.gid/apps/Solid/xml/Strategies.xml +++ b/kratos.gid/apps/Solid/xml/Strategies.xml @@ -185,13 +185,36 @@ - + + + + + + + + + + + + + + + + + + + + + + + + From 45eed0fd73b6c254ed2dfd8cc7bf97129a459bd6 Mon Sep 17 00:00:00 2001 From: Josep Maria Date: Tue, 29 Aug 2017 22:58:00 +0200 Subject: [PATCH 07/17] updating material write for beams --- kratos.gid/apps/Solid/write/write.tcl | 92 ++++++++++++++++++- .../apps/Solid/xml/ConstitutiveLaws.xml | 52 +++++++++++ 2 files changed, 139 insertions(+), 5 deletions(-) diff --git a/kratos.gid/apps/Solid/write/write.tcl b/kratos.gid/apps/Solid/write/write.tcl index fca53b84b..f329b8700 100644 --- a/kratos.gid/apps/Solid/write/write.tcl +++ b/kratos.gid/apps/Solid/write/write.tcl @@ -136,14 +136,96 @@ from __future__ import print_function, absolute_import, division #makes KratosMu # Importing the Kratos Library from KratosMultiphysics import * from KratosMultiphysics.SolidMechanicsApplication import * -#from beam_sections_python_utility import SetProperties -#from beam_sections_python_utility import SetMaterialProperties +from beam_sections_python_utility import SetProperties +from beam_sections_python_utility import SetMaterialProperties def AssignMaterial(Properties): - # material for solid material -" + # material for solid material" foreach {part mat} [write::getMatDict] { if {[dict get $mat APPID] in $validApps} { + set law_name [dict get $mat ConstitutiveLaw] + set law_type [[Model::getConstitutiveLaw $law_name] getAttribute "Type"] + set public_name [[Model::getConstitutiveLaw $law_name] getAttribute "pn"] + if {$law_type eq "1D_UR"} { + append str " + prop_id = [dict get $mat MID]; + prop = Properties\[prop_id\] +" + if {$public_name eq "Circular"} { + append str " + section_type = \"$public_name\" + prop_list = \[\] + prop_list.append([dict get $mat DIAMETER]) + prop = SetProperties(section_type,prop_list,prop) +" + } elseif {$public_name eq "Tubular"} { + append str " + section_type = \"$public_name\" + prop_list = \[\] + prop_list.append([dict get $mat DIAMETER]) + prop_list.append([dict get $mat THICKNESS]) + prop = SetProperties(section_type,prop_list,prop) +" + } elseif {$public_name eq "Rectangular"} { + append str " + section_type = \"$public_name\" + prop_list = \[\] + prop_list.append([dict get $mat HEIGHT]) + prop_list.append([dict get $mat WIDTH]) + prop = SetProperties(section_type,prop_list,prop) +" + } elseif {$public_name eq "UserDefined"} { + append str " + section_type = \"$public_name\" + prop_list = \[\] + prop_list.append([dict get $mat AREA]) + prop_list.append([dict get $mat INERTIA_X]) + prop_list.append([dict get $mat INERTIA_y]) + prop = SetProperties(section_type,prop_list,prop) +" + } elseif {$public_name eq "UserDefined"} { + append str " + section_type = \"$public_name\" + prop_list = \[\] + prop_list.append([dict get $mat AREA]) + prop_list.append([dict get $mat INERTIA_X]) + prop_list.append([dict get $mat INERTIA_y]) + prop = SetProperties(section_type,prop_list,prop) +" + } elseif {$public_name eq "UserParameters"} { + append str " + section_type = \"UserDefined\" + prop_list = \[\] + prop_list.append([dict get $mat YOUNGxAREA]) + prop_list.append([dict get $mat SHEARxREDUCED_AREA]) + prop_list.append([dict get $mat YOUNGxINERTIA_X]) + prop_list.append([dict get $mat YOUNGxINERTIA_Y]) + prop_list.append([dict get $mat SHEARxPOLAR_INERTIA]) + prop = SetMaterialProperties(section_type,prop_list,prop) +" + } else { + append str " + section_type = \"$public_name\" + prop_list = \[\] + prop_list.append([dict get $mat SIZE]) + prop = SetProperties(section_type,prop_list,prop) +" + } + } { + append str " + prop_id = [dict get $mat MID]; + prop = Properties\[prop_id\] + mat = [dict get $mat ConstitutiveLaw]() + prop.SetValue(CONSTITUTIVE_LAW, mat.Clone()) +" + + } + } + } + +if 0 { + foreach {part mat} [write::getMatDict] { + if {[dict get $mat APPID] in $validApps} { append str " prop_id = [dict get $mat MID]; prop = Properties\[prop_id\] @@ -152,7 +234,7 @@ def AssignMaterial(Properties): " } } - +} write::WriteString $str write::CloseFile diff --git a/kratos.gid/apps/Solid/xml/ConstitutiveLaws.xml b/kratos.gid/apps/Solid/xml/ConstitutiveLaws.xml index 24d8f5ce8..ca3593cb2 100644 --- a/kratos.gid/apps/Solid/xml/ConstitutiveLaws.xml +++ b/kratos.gid/apps/Solid/xml/ConstitutiveLaws.xml @@ -47,6 +47,58 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From 6f9cfbd5e2bab96a8fe7fe53efbe2fad310407db Mon Sep 17 00:00:00 2001 From: Josep Maria Date: Mon, 11 Sep 2017 22:51:00 +0200 Subject: [PATCH 08/17] bbar elements active --- kratos.gid/apps/Solid/xml/Elements.xml | 10 ++++++++++ kratos.gid/apps/Solid/xml/GetFromXML.tcl | 4 ++-- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/kratos.gid/apps/Solid/xml/Elements.xml b/kratos.gid/apps/Solid/xml/Elements.xml index 069742b19..756c2260d 100644 --- a/kratos.gid/apps/Solid/xml/Elements.xml +++ b/kratos.gid/apps/Solid/xml/Elements.xml @@ -54,6 +54,10 @@ + + + + @@ -176,6 +180,12 @@ + + + + + + diff --git a/kratos.gid/apps/Solid/xml/GetFromXML.tcl b/kratos.gid/apps/Solid/xml/GetFromXML.tcl index a6cf6d0d3..c562d7027 100644 --- a/kratos.gid/apps/Solid/xml/GetFromXML.tcl +++ b/kratos.gid/apps/Solid/xml/GetFromXML.tcl @@ -16,8 +16,8 @@ proc Solid::xml::Init { } { Model::getConditions Conditions.xml Model::getSolvers "../../Common/xml/Solvers.xml" - Model::ForgetElement SmallDisplacementBbarElement2D - Model::ForgetElement SmallDisplacementBbarElement3D + # Model::ForgetElement SmallDisplacementBbarElement2D + # Model::ForgetElement SmallDisplacementBbarElement3D } From ed3ddd5a8c3c178c15419ce512f8928a7b5b22bd Mon Sep 17 00:00:00 2001 From: Josep Maria Date: Mon, 11 Sep 2017 22:52:38 +0200 Subject: [PATCH 09/17] start updating material models --- kratos.gid/apps/Solid/write/write.tcl | 24 +- .../apps/Solid/xml/ConstitutiveLaws.xml | 505 ++++++++++-------- 2 files changed, 297 insertions(+), 232 deletions(-) diff --git a/kratos.gid/apps/Solid/write/write.tcl b/kratos.gid/apps/Solid/write/write.tcl index f329b8700..d7ae01f17 100644 --- a/kratos.gid/apps/Solid/write/write.tcl +++ b/kratos.gid/apps/Solid/write/write.tcl @@ -241,9 +241,14 @@ if 0 { } proc Solid::write::getPropertiesList {parts_un} { - variable mat_dict + set mat_dict [write::getMatDict] set props_dict [dict create] set props [list ] + + + set python_module "assign_materials_process" + set process_name "AssignMaterialsProcess" + set help "This process creates a material and assigns it properties" #set doc $gid_groups_conds::doc #set root [$doc documentElement] @@ -256,9 +261,13 @@ proc Solid::write::getPropertiesList {parts_un} { if { [dict exists $mat_dict $group] } { set mid [dict get $mat_dict $group MID] set prop_dict [dict create] - dict set prop_dict "model_part_name" $sub_model_part - dict set prop_dict "properties_id" $mid - set constitutive_law [dict get $mat_dict $group ConstitutiveLaw] + set constitutive_law [dict get $mat_dict $group ConstitutiveLaw] + set const_law_application [[Model::getConstitutiveLaw $constitutive_law] getAttribute "ImplementedInApplication"] + dict set prop_dict "python_module" $python_module + dict set prop_dict "kratos_module" $const_law_application + dict set prop_dict "help" $help + dict set prop_dict "process_name" $process_name + set exclusionList [list "MID" "APPID" "ConstitutiveLaw" "Material" "Element"] set variables_dict [dict create] foreach prop [dict keys [dict get $mat_dict $group] ] { @@ -267,11 +276,12 @@ proc Solid::write::getPropertiesList {parts_un} { } } set material_dict [dict create] - set const_law_application [[Model::getConstitutiveLaw $constitutive_law] getAttribute "ImplementedInApplication"] set const_law_fullname [join [list "KratosMultiphysics" $const_law_application $constitutive_law] "."] + dict set material_dict "model_part_name" $sub_model_part + dict set material_dict "properties_id" $mid dict set material_dict constitutive_law [dict create name $const_law_fullname] - dict set material_dict Variables $variables_list - dict set material_dict Tables dictnull + dict set material_dict variables $variables_list + dict set material_dict tables dictnull dict set prop_dict Parameters $material_dict lappend props $prop_dict diff --git a/kratos.gid/apps/Solid/xml/ConstitutiveLaws.xml b/kratos.gid/apps/Solid/xml/ConstitutiveLaws.xml index ca3593cb2..18933a421 100644 --- a/kratos.gid/apps/Solid/xml/ConstitutiveLaws.xml +++ b/kratos.gid/apps/Solid/xml/ConstitutiveLaws.xml @@ -1,7 +1,7 @@ - @@ -12,7 +12,7 @@ - @@ -23,7 +23,7 @@ - @@ -35,7 +35,7 @@ - @@ -46,6 +46,281 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -302,7 +577,7 @@ - @@ -315,224 +590,4 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - From f554cc4d6a619138fb784458899aff21318a41e7 Mon Sep 17 00:00:00 2001 From: Josep Maria Date: Wed, 13 Sep 2017 01:10:10 +0200 Subject: [PATCH 10/17] sections to json input --- kratos.gid/apps/Solid/write/write.tcl | 71 +++++++++++++------ .../apps/Solid/xml/ConstitutiveLaws.xml | 44 ++++++------ 2 files changed, 70 insertions(+), 45 deletions(-) diff --git a/kratos.gid/apps/Solid/write/write.tcl b/kratos.gid/apps/Solid/write/write.tcl index d7ae01f17..3815495d7 100644 --- a/kratos.gid/apps/Solid/write/write.tcl +++ b/kratos.gid/apps/Solid/write/write.tcl @@ -118,6 +118,8 @@ proc Solid::write::getLastConditionId { } { return $top } + +# Custom files # Custom files proc Solid::write::WriteMaterialsFile { } { variable validApps @@ -128,7 +130,18 @@ proc Solid::write::WriteMaterialsFile { } { write::OpenFile $filename write::WriteJSON $mats_json write::CloseFile +} + +proc Solid::write::WriteMaterialsFileOld { } { + variable validApps + + set filename "Materials.json" + set mats_json [getPropertiesList SLParts] + write::OpenFile $filename + write::WriteJSON $mats_json + write::CloseFile + write::OpenFile "materials.py" set str " @@ -180,18 +193,9 @@ def AssignMaterial(Properties): prop_list = \[\] prop_list.append([dict get $mat AREA]) prop_list.append([dict get $mat INERTIA_X]) - prop_list.append([dict get $mat INERTIA_y]) + prop_list.append([dict get $mat INERTIA_Y]) prop = SetProperties(section_type,prop_list,prop) " - } elseif {$public_name eq "UserDefined"} { - append str " - section_type = \"$public_name\" - prop_list = \[\] - prop_list.append([dict get $mat AREA]) - prop_list.append([dict get $mat INERTIA_X]) - prop_list.append([dict get $mat INERTIA_y]) - prop = SetProperties(section_type,prop_list,prop) -" } elseif {$public_name eq "UserParameters"} { append str " section_type = \"UserDefined\" @@ -237,18 +241,18 @@ if 0 { } write::WriteString $str write::CloseFile - + } proc Solid::write::getPropertiesList {parts_un} { set mat_dict [write::getMatDict] set props_dict [dict create] set props [list ] - + set sections [list ] set python_module "assign_materials_process" set process_name "AssignMaterialsProcess" - set help "This process creates a material and assigns it properties" + set help "This process creates a material and assigns its properties" #set doc $gid_groups_conds::doc #set root [$doc documentElement] @@ -259,10 +263,18 @@ proc Solid::write::getPropertiesList {parts_un} { set group [get_domnode_attribute $gNode n] set sub_model_part [write::getMeshId Parts $group] if { [dict exists $mat_dict $group] } { - set mid [dict get $mat_dict $group MID] - set prop_dict [dict create] - set constitutive_law [dict get $mat_dict $group ConstitutiveLaw] - set const_law_application [[Model::getConstitutiveLaw $constitutive_law] getAttribute "ImplementedInApplication"] + set law_id [dict get $mat_dict $group MID] + set law_name [dict get $mat_dict $group ConstitutiveLaw] + set law_type [[Model::getConstitutiveLaw $law_name] getAttribute "Type"] + + if {$law_type eq "1D_UR"} { + set python_module "assign_sections_process" + set process_name "AssignSectionsProcess" + set help "This process creates a section and assigns its properties" + } + + set prop_dict [dict create] + set const_law_application [[Model::getConstitutiveLaw $law_name] getAttribute "ImplementedInApplication"] dict set prop_dict "python_module" $python_module dict set prop_dict "kratos_module" $const_law_application dict set prop_dict "help" $help @@ -275,21 +287,34 @@ proc Solid::write::getPropertiesList {parts_un} { dict set variables_list $prop [write::getFormattedValue [dict get $mat_dict $group $prop]] } } - set material_dict [dict create] - set const_law_fullname [join [list "KratosMultiphysics" $const_law_application $constitutive_law] "."] + + set material_dict [dict create] dict set material_dict "model_part_name" $sub_model_part - dict set material_dict "properties_id" $mid - dict set material_dict constitutive_law [dict create name $const_law_fullname] + dict set material_dict "properties_id" $law_id + + if {$law_type eq "1D_UR"} { + set public_name [[Model::getConstitutiveLaw $law_name] getAttribute "pn"] + dict set material_dict "section_type" $public_name + } else { + set const_law_fullname [join [list "KratosMultiphysics" $const_law_application $law_name] "."] + dict set material_dict constitutive_law [dict create name $const_law_fullname] + } dict set material_dict variables $variables_list dict set material_dict tables dictnull dict set prop_dict Parameters $material_dict - - lappend props $prop_dict + + if {$law_type eq "1D_UR"} { + lappend sections $prop_dict + } else { + lappend props $prop_dict + } } } dict set props_dict material_models_list $props + dict set props_dict material_models_list $sections + return $props_dict } diff --git a/kratos.gid/apps/Solid/xml/ConstitutiveLaws.xml b/kratos.gid/apps/Solid/xml/ConstitutiveLaws.xml index 18933a421..a7a3f1cb5 100644 --- a/kratos.gid/apps/Solid/xml/ConstitutiveLaws.xml +++ b/kratos.gid/apps/Solid/xml/ConstitutiveLaws.xml @@ -322,7 +322,7 @@ - @@ -335,7 +335,7 @@ - @@ -348,7 +348,7 @@ - @@ -361,7 +361,7 @@ - @@ -374,7 +374,7 @@ - @@ -385,7 +385,7 @@ - @@ -396,7 +396,7 @@ - @@ -408,7 +408,7 @@ - @@ -420,7 +420,7 @@ - @@ -432,7 +432,7 @@ - @@ -444,7 +444,7 @@ - @@ -455,7 +455,7 @@ - @@ -466,7 +466,7 @@ - @@ -477,7 +477,7 @@ - @@ -488,7 +488,7 @@ - @@ -499,7 +499,7 @@ - @@ -510,7 +510,7 @@ - @@ -521,7 +521,7 @@ - @@ -532,7 +532,7 @@ - @@ -543,7 +543,7 @@ - @@ -554,7 +554,7 @@ - @@ -565,7 +565,7 @@ - From c9afc01501879aa570905aa6092ec796b55aff60 Mon Sep 17 00:00:00 2001 From: Josep Maria Date: Wed, 4 Oct 2017 19:17:04 +0200 Subject: [PATCH 11/17] update of strategies and modules --- kratos.gid/apps/Solid/write/write.tcl | 17 ++-- .../Solid/write/writeProjectParameters.tcl | 2 +- kratos.gid/apps/Solid/xml/Conditions.xml | 56 ++++++------ .../apps/Solid/xml/ConstitutiveLaws.xml | 90 +++++++++---------- kratos.gid/apps/Solid/xml/Elements.xml | 48 +++++----- kratos.gid/apps/Solid/xml/Loads.spd | 4 +- kratos.gid/apps/Solid/xml/NodalConditions.xml | 26 +++--- kratos.gid/apps/Solid/xml/Strategies.xml | 29 +++--- 8 files changed, 132 insertions(+), 140 deletions(-) diff --git a/kratos.gid/apps/Solid/write/write.tcl b/kratos.gid/apps/Solid/write/write.tcl index 3815495d7..394f4f445 100644 --- a/kratos.gid/apps/Solid/write/write.tcl +++ b/kratos.gid/apps/Solid/write/write.tcl @@ -274,9 +274,9 @@ proc Solid::write::getPropertiesList {parts_un} { } set prop_dict [dict create] - set const_law_application [[Model::getConstitutiveLaw $law_name] getAttribute "ImplementedInApplication"] + set kratos_module [[Model::getConstitutiveLaw $law_name] getAttribute "kratos_module"] dict set prop_dict "python_module" $python_module - dict set prop_dict "kratos_module" $const_law_application + dict set prop_dict "kratos_module" $kratos_module dict set prop_dict "help" $help dict set prop_dict "process_name" $process_name @@ -296,24 +296,19 @@ proc Solid::write::getPropertiesList {parts_un} { set public_name [[Model::getConstitutiveLaw $law_name] getAttribute "pn"] dict set material_dict "section_type" $public_name } else { - set const_law_fullname [join [list "KratosMultiphysics" $const_law_application $law_name] "."] - dict set material_dict constitutive_law [dict create name $const_law_fullname] + set law_full_name [join [list "KratosMultiphysics" $kratos_module $law_name] "."] + dict set material_dict constitutive_law [dict create name $law_full_name] } dict set material_dict variables $variables_list dict set material_dict tables dictnull dict set prop_dict Parameters $material_dict - if {$law_type eq "1D_UR"} { - lappend sections $prop_dict - } else { - lappend props $prop_dict - } + lappend props $prop_dict } } - + dict set props_dict material_models_list $props - dict set props_dict material_models_list $sections return $props_dict } diff --git a/kratos.gid/apps/Solid/write/writeProjectParameters.tcl b/kratos.gid/apps/Solid/write/writeProjectParameters.tcl index ae1870752..7421271c6 100644 --- a/kratos.gid/apps/Solid/write/writeProjectParameters.tcl +++ b/kratos.gid/apps/Solid/write/writeProjectParameters.tcl @@ -39,7 +39,7 @@ proc Solid::write::getParametersDict { } { # Solution strategy set solverSettingsDict [dict create] set currentStrategyId [write::getValue SLSolStrat] - set strategy_write_name [[::Model::GetSolutionStrategy $currentStrategyId] getAttribute "ImplementedInPythonFile"] + set strategy_write_name [[::Model::GetSolutionStrategy $currentStrategyId] getAttribute "python_module"] dict set solverSettingsDict solver_type $strategy_write_name #~ dict set solverSettingsDict dimension [expr $nDim] dict set solverSettingsDict echo_level $echo_level diff --git a/kratos.gid/apps/Solid/xml/Conditions.xml b/kratos.gid/apps/Solid/xml/Conditions.xml index 97458428e..f9229a33e 100644 --- a/kratos.gid/apps/Solid/xml/Conditions.xml +++ b/kratos.gid/apps/Solid/xml/Conditions.xml @@ -2,7 +2,7 @@ @@ -20,7 +20,7 @@ @@ -38,7 +38,7 @@ @@ -56,7 +56,7 @@ @@ -70,7 +70,7 @@ - @@ -85,7 +85,7 @@ @@ -100,7 +100,7 @@ @@ -116,7 +116,7 @@ @@ -132,7 +132,7 @@ @@ -148,7 +148,7 @@ @@ -167,7 +167,7 @@ @@ -183,7 +183,7 @@ @@ -199,7 +199,7 @@ @@ -218,7 +218,7 @@ @@ -232,7 +232,7 @@ - @@ -247,7 +247,7 @@ @@ -262,7 +262,7 @@ @@ -278,7 +278,7 @@ @@ -294,7 +294,7 @@ @@ -310,7 +310,7 @@ @@ -329,7 +329,7 @@ @@ -344,7 +344,7 @@ @@ -359,7 +359,7 @@ @@ -375,7 +375,7 @@ @@ -391,7 +391,7 @@ @@ -410,7 +410,7 @@ @@ -426,7 +426,7 @@ @@ -442,7 +442,7 @@ diff --git a/kratos.gid/apps/Solid/xml/ConstitutiveLaws.xml b/kratos.gid/apps/Solid/xml/ConstitutiveLaws.xml index a7a3f1cb5..c30046581 100644 --- a/kratos.gid/apps/Solid/xml/ConstitutiveLaws.xml +++ b/kratos.gid/apps/Solid/xml/ConstitutiveLaws.xml @@ -1,7 +1,7 @@ - @@ -12,7 +12,7 @@ - @@ -23,7 +23,7 @@ - @@ -35,7 +35,7 @@ - @@ -48,7 +48,7 @@ - @@ -65,7 +65,7 @@ - @@ -82,7 +82,7 @@ - @@ -101,7 +101,7 @@ - @@ -112,7 +112,7 @@ - @@ -123,7 +123,7 @@ - @@ -136,7 +136,7 @@ - @@ -147,7 +147,7 @@ - @@ -158,7 +158,7 @@ - @@ -171,7 +171,7 @@ - @@ -188,7 +188,7 @@ - @@ -205,7 +205,7 @@ - @@ -223,7 +223,7 @@ - @@ -240,7 +240,7 @@ - @@ -257,7 +257,7 @@ - @@ -277,7 +277,7 @@ - @@ -291,7 +291,7 @@ - @@ -305,7 +305,7 @@ - @@ -322,7 +322,7 @@ - @@ -335,7 +335,7 @@ - @@ -348,7 +348,7 @@ - @@ -361,7 +361,7 @@ - @@ -374,7 +374,7 @@ - @@ -385,7 +385,7 @@ - @@ -396,7 +396,7 @@ - @@ -408,7 +408,7 @@ - @@ -420,7 +420,7 @@ - @@ -432,7 +432,7 @@ - @@ -444,7 +444,7 @@ - @@ -455,7 +455,7 @@ - @@ -466,7 +466,7 @@ - @@ -477,7 +477,7 @@ - @@ -488,7 +488,7 @@ - @@ -499,7 +499,7 @@ - @@ -510,7 +510,7 @@ - @@ -521,7 +521,7 @@ - @@ -532,7 +532,7 @@ - @@ -543,7 +543,7 @@ - @@ -554,7 +554,7 @@ - @@ -565,7 +565,7 @@ - @@ -577,7 +577,7 @@ - diff --git a/kratos.gid/apps/Solid/xml/Elements.xml b/kratos.gid/apps/Solid/xml/Elements.xml index 756c2260d..4fa258b3d 100644 --- a/kratos.gid/apps/Solid/xml/Elements.xml +++ b/kratos.gid/apps/Solid/xml/Elements.xml @@ -3,7 +3,7 @@ @@ -47,7 +47,7 @@ @@ -91,7 +91,7 @@ @@ -131,7 +131,7 @@ @@ -173,7 +173,7 @@ @@ -217,7 +217,7 @@ @@ -258,7 +258,7 @@ @@ -301,7 +301,7 @@ @@ -343,7 +343,7 @@ @@ -383,7 +383,7 @@ @@ -427,7 +427,7 @@ @@ -466,7 +466,7 @@ @@ -504,7 +504,7 @@ @@ -542,7 +542,7 @@ @@ -575,7 +575,7 @@ @@ -608,7 +608,7 @@ @@ -641,7 +641,7 @@ @@ -674,7 +674,7 @@ @@ -707,7 +707,7 @@ @@ -740,7 +740,7 @@ @@ -775,7 +775,7 @@ @@ -810,7 +810,7 @@ @@ -846,7 +846,7 @@ @@ -879,7 +879,7 @@ diff --git a/kratos.gid/apps/Solid/xml/Loads.spd b/kratos.gid/apps/Solid/xml/Loads.spd index 835185f54..6620bec9e 100644 --- a/kratos.gid/apps/Solid/xml/Loads.spd +++ b/kratos.gid/apps/Solid/xml/Loads.spd @@ -1,4 +1,4 @@ - - \ No newline at end of file + + diff --git a/kratos.gid/apps/Solid/xml/NodalConditions.xml b/kratos.gid/apps/Solid/xml/NodalConditions.xml index 59a0e5a3d..91d60adbd 100644 --- a/kratos.gid/apps/Solid/xml/NodalConditions.xml +++ b/kratos.gid/apps/Solid/xml/NodalConditions.xml @@ -1,49 +1,49 @@ - - - - - - - - - - - @@ -51,10 +51,10 @@ + analysis_type="Dynamic" unit_magnitude="Angle/T" units="rad/s" VariableName="ANGULAR_VELOCITY" App="Solid" kratos_module="SolidMechanicsApplication"> + analysis_type="Dynamic" unit_magnitude="Angle/T^2" units="rad/s^2" VariableName="ANGULAR_ACCELERATION" App="Solid" kratos_module="SolidMechanicsApplication"> diff --git a/kratos.gid/apps/Solid/xml/Strategies.xml b/kratos.gid/apps/Solid/xml/Strategies.xml index 0f43559ed..1034fa2d8 100644 --- a/kratos.gid/apps/Solid/xml/Strategies.xml +++ b/kratos.gid/apps/Solid/xml/Strategies.xml @@ -1,9 +1,8 @@ @@ -57,7 +56,7 @@ - + @@ -68,16 +67,15 @@ - + @@ -128,16 +126,15 @@ - + @@ -189,14 +186,14 @@ - + - + @@ -204,7 +201,7 @@ - + @@ -212,7 +209,7 @@ - + From 6acc76d27c931e49ae475b07f8e500819437cc77 Mon Sep 17 00:00:00 2001 From: Josep Maria Date: Wed, 4 Oct 2017 19:20:09 +0200 Subject: [PATCH 12/17] update strategies for solids --- .../Pfem/write/writeProjectParameters.tcl | 2 +- kratos.gid/apps/Pfem/xml/ConstitutiveLaws.xml | 4 +- kratos.gid/apps/Pfem/xml/Elements.xml | 60 ++++----- kratos.gid/apps/Pfem/xml/ModelType.spd | 4 +- kratos.gid/apps/Pfem/xml/NodalConditions.xml | 6 +- kratos.gid/apps/Pfem/xml/Strategies.xml | 120 +++++++++--------- 6 files changed, 101 insertions(+), 95 deletions(-) diff --git a/kratos.gid/apps/Pfem/write/writeProjectParameters.tcl b/kratos.gid/apps/Pfem/write/writeProjectParameters.tcl index 112e604bd..c0f09e109 100644 --- a/kratos.gid/apps/Pfem/write/writeProjectParameters.tcl +++ b/kratos.gid/apps/Pfem/write/writeProjectParameters.tcl @@ -68,7 +68,7 @@ proc Pfem::write::GetPFEM_SolverSettingsDict { } { set solverSettingsDict [dict create] set currentStrategyId [write::getValue PFEM_SolStrat] - set strategy_write_name [[::Model::GetSolutionStrategy $currentStrategyId] getAttribute "ImplementedInPythonFile"] + set strategy_write_name [[::Model::GetSolutionStrategy $currentStrategyId] getAttribute "python_module"] dict set solverSettingsDict solver_type $strategy_write_name set problemtype [write::getValue PFEM_DomainType] diff --git a/kratos.gid/apps/Pfem/xml/ConstitutiveLaws.xml b/kratos.gid/apps/Pfem/xml/ConstitutiveLaws.xml index 38d91eac2..d95fb89aa 100644 --- a/kratos.gid/apps/Pfem/xml/ConstitutiveLaws.xml +++ b/kratos.gid/apps/Pfem/xml/ConstitutiveLaws.xml @@ -1,7 +1,7 @@ - + @@ -10,7 +10,7 @@ - + diff --git a/kratos.gid/apps/Pfem/xml/Elements.xml b/kratos.gid/apps/Pfem/xml/Elements.xml index c145806d4..6c76359b4 100644 --- a/kratos.gid/apps/Pfem/xml/Elements.xml +++ b/kratos.gid/apps/Pfem/xml/Elements.xml @@ -4,7 +4,7 @@ @@ -15,7 +15,7 @@ - + @@ -30,7 +30,7 @@ @@ -41,7 +41,7 @@ - + @@ -57,7 +57,7 @@ @@ -68,7 +68,7 @@ - + @@ -86,7 +86,7 @@ @@ -97,7 +97,7 @@ - + @@ -117,7 +117,7 @@ @@ -128,7 +128,7 @@ - + @@ -146,7 +146,7 @@ @@ -157,7 +157,7 @@ - + @@ -178,7 +178,7 @@ @@ -205,7 +205,7 @@ @@ -232,7 +232,7 @@ @@ -259,7 +259,7 @@ @@ -289,7 +289,7 @@ @@ -299,7 +299,7 @@ - + @@ -325,7 +325,7 @@ @@ -335,7 +335,7 @@ - + @@ -361,7 +361,7 @@ @@ -371,7 +371,7 @@ - + @@ -397,7 +397,7 @@ @@ -407,7 +407,7 @@ - + @@ -433,7 +433,7 @@ @@ -443,7 +443,7 @@ - + @@ -472,7 +472,7 @@ @@ -482,7 +482,7 @@ - + @@ -509,7 +509,7 @@ @@ -519,7 +519,7 @@ - + diff --git a/kratos.gid/apps/Pfem/xml/ModelType.spd b/kratos.gid/apps/Pfem/xml/ModelType.spd index 6a774d679..0eac8291d 100644 --- a/kratos.gid/apps/Pfem/xml/ModelType.spd +++ b/kratos.gid/apps/Pfem/xml/ModelType.spd @@ -4,8 +4,8 @@ - - + + diff --git a/kratos.gid/apps/Pfem/xml/NodalConditions.xml b/kratos.gid/apps/Pfem/xml/NodalConditions.xml index 9357f660f..70c8b0778 100644 --- a/kratos.gid/apps/Pfem/xml/NodalConditions.xml +++ b/kratos.gid/apps/Pfem/xml/NodalConditions.xml @@ -1,12 +1,12 @@ - - + unit_magnitude="Velocity" units="m/s" App="Pfem" kratos_module="PFEMapplication" ov="[CheckGeometry 2]"> diff --git a/kratos.gid/apps/Pfem/xml/Strategies.xml b/kratos.gid/apps/Pfem/xml/Strategies.xml index 23a7253ce..7ae07a5ca 100644 --- a/kratos.gid/apps/Pfem/xml/Strategies.xml +++ b/kratos.gid/apps/Pfem/xml/Strategies.xml @@ -1,29 +1,24 @@ - - + + + - - - - - - - - - - + + + + + - + @@ -60,7 +55,7 @@ - + @@ -68,7 +63,7 @@ - + @@ -76,9 +71,8 @@ @@ -113,7 +107,7 @@ - + @@ -128,40 +122,45 @@ --> - + - - - - - - - - - + + + + + + + + + + + + + + + + + @@ -170,27 +169,34 @@ - + - - - - - - - - - + + + + + + + + + + + + + + + + @@ -242,7 +248,7 @@ - + --> From c93ab06633c81cae78f24caf9b0a5960fea5025d Mon Sep 17 00:00:00 2001 From: Josep Maria Date: Wed, 11 Oct 2017 19:16:40 +0200 Subject: [PATCH 13/17] delete not needed mesh_id --- kratos.gid/apps/Pfem/write/ProjectParameters.json | 5 ----- kratos.gid/apps/Pfem/write/writeProjectParameters.tcl | 4 ---- kratos.gid/apps/Solid/xml/Conditions.xml | 6 +++--- 3 files changed, 3 insertions(+), 12 deletions(-) diff --git a/kratos.gid/apps/Pfem/write/ProjectParameters.json b/kratos.gid/apps/Pfem/write/ProjectParameters.json index 030314b1b..aaeaac1ed 100644 --- a/kratos.gid/apps/Pfem/write/ProjectParameters.json +++ b/kratos.gid/apps/Pfem/write/ProjectParameters.json @@ -58,7 +58,6 @@ "meshing_domains" : [ { "python_module": "meshing_domain", - "mesh_id": 1, "model_part_name": "body_1", "alpha_shape": 2.4, "offset_factor": 0.0, @@ -136,7 +135,6 @@ "parametric_walls" : [ { "python_module": "parametric_wall", - "mesh_id": 0, "model_part_name" : "model_part_name", "rigid_body_settings":{ "rigid_body_element_type": "TranslatoryRigidElement3D1N", @@ -227,7 +225,6 @@ "help" : "This process applies contact domain search by remeshing outer boundaries", "process_name" : "ContactDomainProcess", "Parameters" : { - "mesh_id" : 0, "model_part_name" : "model_part_name", "meshing_control_type" : "step", "meshing_frequency" : 1.0, @@ -269,7 +266,6 @@ "help" : "This process imposes a constraint", "process_name" : "AssignValueToVectorComponentsProcess", "Parameters" : { - "mesh_id" : 0, "model_part_name" : "DISPLACEMENT_Displacement_Auto1", "variable_name" : "DISPLACEMENT", "interval" : [0.0, 100], @@ -284,7 +280,6 @@ "help" : "This process assigns a load value on conditions", "process_name" : "AssignVectorToConditionsProcess", "Parameters" : { - "mesh_id" : 0, "model_part_name" : "load_y", "variable_name" : "LINE_LOAD", "interval" : [0.0, 100], diff --git a/kratos.gid/apps/Pfem/write/writeProjectParameters.tcl b/kratos.gid/apps/Pfem/write/writeProjectParameters.tcl index c0f09e109..c3632ee59 100644 --- a/kratos.gid/apps/Pfem/write/writeProjectParameters.tcl +++ b/kratos.gid/apps/Pfem/write/writeProjectParameters.tcl @@ -147,7 +147,6 @@ proc Pfem::write::GetPFEM_ContactDict { } { dict set contact_dict "help" "This process applies contact domain search by remeshing outer boundaries" dict set contact_dict "process_name" "ContactDomainProcess" set params [dict create] - dict set params "mesh_id" 0 dict set params "model_part_name" "model_part_name" dict set params "meshing_control_type" "step" dict set params "meshing_frequency" 1.0 @@ -223,7 +222,6 @@ proc Pfem::write::GetPFEM_RemeshDict { } { set bodyDict [dict create ] set body_name [dict get $body body_name] dict set bodyDict "python_module" "meshing_domain" - dict set bodyDict "mesh_id" 0 dict set bodyDict "model_part_name" $body_name dict set bodyDict "alpha_shape" 2.4 dict set bodyDict "offset_factor" 0.0 @@ -337,7 +335,6 @@ proc Pfem::write::GetPFEM_FluidRemeshDict { } { foreach body $bodies_list { set bodyDict [dict create ] set body_name [dict get $body body_name] - dict set bodyDict "mesh_id" 0 dict set bodyDict "model_part_name" $body_name dict set bodyDict "python_module" "fluid_meshing_domain" set nDim $::Model::SpatialDimension @@ -571,7 +568,6 @@ proc Pfem::write::getBodyConditionsParametersDict {un {condition_type "Condition set process [::Model::GetProcess $processName] set processDict [dict create] set paramDict [dict create] - dict set paramDict mesh_id 0 dict set paramDict model_part_name $bodyId set vatiable_name [$condition getAttribute VariableName] dict set paramDict variable_name [lindex $vatiable_name 0] diff --git a/kratos.gid/apps/Solid/xml/Conditions.xml b/kratos.gid/apps/Solid/xml/Conditions.xml index f9229a33e..64ea66826 100644 --- a/kratos.gid/apps/Solid/xml/Conditions.xml +++ b/kratos.gid/apps/Solid/xml/Conditions.xml @@ -170,7 +170,7 @@ kratos_module="SolidMechanicsApplication" MinimumKratosVersion="9000" ProductionReady="ProductionReady" WorkingSpaceDimension="2D" LocalSpaceDimension="1" RequiresLocalAxes="False" LargeDeformation="False" ElementType="Line" ProcessName="AssignScalarToConditionsProcess" help="Normal pressure on lines, oriented pointing against the line outer normal" - units="Pa" unit_magnitude="P" VariableName="POSITIVE_FACE_PRESSURE "> + units="Pa" unit_magnitude="P" VariableName="POSITIVE_FACE_PRESSURE"> @@ -186,7 +186,7 @@ kratos_module="SolidMechanicsApplication" MinimumKratosVersion="9000" ProductionReady="ProductionReady" WorkingSpaceDimension="2Da" LocalSpaceDimension="1" RequiresLocalAxes="False" LargeDeformation="False" ElementType="Line" ProcessName="AssignScalarToConditionsProcess" help="Normal pressure on lines, oriented pointing against the line outer normal" - units="Pa" unit_magnitude="P" VariableName="POSITIVE_FACE_PRESSURE "> + units="Pa" unit_magnitude="P" VariableName="POSITIVE_FACE_PRESSURE"> @@ -202,7 +202,7 @@ kratos_module="SolidMechanicsApplication" MinimumKratosVersion="9000" ProductionReady="ProductionReady" WorkingSpaceDimension="3D" LocalSpaceDimension="2" RequiresLocalAxes="False" LargeDeformation="False" ElementType="Surface" ProcessName="AssignScalarToConditionsProcess" help="Normal Pressure on surfaces, oriented pointing against the surface outer normal" - units="Pa" unit_magnitude="P" VariableName="POSITIVE_FACE_PRESSURE "> + units="Pa" unit_magnitude="P" VariableName="POSITIVE_FACE_PRESSURE"> From 4b8e38af695470c32fa83486afd655d7f2a379cc Mon Sep 17 00:00:00 2001 From: Josep Maria Date: Wed, 11 Oct 2017 19:44:33 +0200 Subject: [PATCH 14/17] write mesh id tcl process definition cloned in the pfem and solid apps --- kratos.gid/apps/Pfem/write/write.tcl | 123 +++++++++++++++++ .../Pfem/write/writeProjectParameters.tcl | 4 +- kratos.gid/apps/Solid/write/write.tcl | 124 ++++++++++++++++++ .../Solid/write/writeProjectParameters.tcl | 4 +- 4 files changed, 251 insertions(+), 4 deletions(-) diff --git a/kratos.gid/apps/Pfem/write/write.tcl b/kratos.gid/apps/Pfem/write/write.tcl index 31ed47c6d..749bbab6c 100644 --- a/kratos.gid/apps/Pfem/write/write.tcl +++ b/kratos.gid/apps/Pfem/write/write.tcl @@ -100,4 +100,127 @@ proc Pfem::write::writeCustomFilesEvent { } { #write::RenameFileInModel "ProjectParameters.json" "ProjectParameters.py" } + +proc Pfem::write::getConditionsParametersDict {un {condition_type "Condition"}} { + + set root [customlib::GetBaseRoot] + + set bcCondsDict [list ] + + set xp1 "[spdAux::getRoute $un]/condition/group" + set groups [$root selectNodes $xp1] + if {$groups eq ""} { + set xp1 "[spdAux::getRoute $un]/group" + set groups [$root selectNodes $xp1] + } + foreach group $groups { + set groupName [$group @n] + set cid [[$group parent] @n] + set groupName [write::GetWriteGroupName $groupName] + set groupId [::write::getMeshId $cid $groupName] + set condId [[$group parent] @n] + if {$condition_type eq "Condition"} { + set condition [::Model::getCondition $condId] + } { + set condition [::Model::getNodalConditionbyId $condId] + } + set processName [$condition getProcessName] + set process [::Model::GetProcess $processName] + set processDict [dict create] + set paramDict [dict create] + dict set paramDict model_part_name $groupId + + set process_attributes [$process getAttributes] + set process_parameters [$process getInputs] + + dict set process_attributes process_name [dict get $process_attributes n] + dict unset process_attributes n + dict unset process_attributes pn + + set processDict [dict merge $processDict $process_attributes] + if {[$condition hasAttribute VariableName]} { + set variable_name [$condition getAttribute VariableName] + # "lindex" is a rough solution. Look for a better one. + if {$variable_name ne ""} {dict set paramDict variable_name [lindex $variable_name 0]} + } + foreach {inputName in_obj} $process_parameters { + set in_type [$in_obj getType] + if {$in_type eq "vector"} { + set vector_type [$in_obj getAttribute "vectorType"] + if {$vector_type eq "bool"} { + set ValX [expr [get_domnode_attribute [$group find n ${inputName}X] v] ? True : False] + set ValY [expr [get_domnode_attribute [$group find n ${inputName}Y] v] ? True : False] + set ValZ [expr False] + if {[$group find n ${inputName}Z] ne ""} {set ValZ [expr [get_domnode_attribute [$group find n ${inputName}Z] v] ? True : False]} + dict set paramDict $inputName [list $ValX $ValY $ValZ] + } { + if {[$in_obj getAttribute "enabled"] in [list "1" "0"]} { + foreach i [list "X" "Y" "Z"] { + if {[expr [get_domnode_attribute [$group find n Enabled_$i] v] ] ne "Yes"} { + set Val$i null + } else { + set printed 0 + if {[$in_obj getAttribute "function"] eq "1"} { + if {[get_domnode_attribute [$group find n "ByFunction$i"] v] eq "Yes"} { + set funcinputName "${i}function_$inputName" + set value [get_domnode_attribute [$group find n $funcinputName] v] + set Val$i $value + set printed 1 + } + } + if {!$printed} { + set value [expr [gid_groups_conds::convert_value_to_default [$group find n ${inputName}$i] ] ] + set Val$i $value + } + } + } + } elseif {$vector_type eq "tablefile" || $vector_type eq "file"} { + set ValX "[get_domnode_attribute [$group find n ${inputName}X] v]" + set ValY "[get_domnode_attribute [$group find n ${inputName}Y] v]" + set ValZ "0" + if {[$group find n ${inputName}Z] ne ""} {set ValZ "[get_domnode_attribute [$group find n ${inputName}Z] v]"} + } else { + set ValX [expr [gid_groups_conds::convert_value_to_default [$group find n ${inputName}X] ] ] + set ValY [expr [gid_groups_conds::convert_value_to_default [$group find n ${inputName}Y] ] ] + set ValZ [expr 0.0] + if {[$group find n ${inputName}Z] ne ""} {set ValZ [expr [gid_groups_conds::convert_value_to_default [$group find n ${inputName}Z] ]]} + } + dict set paramDict $inputName [list $ValX $ValY $ValZ] + } + } elseif {$in_type eq "double" || $in_type eq "integer"} { + set printed 0 + if {[$in_obj getAttribute "function"] eq "1"} { + if {[get_domnode_attribute [$group find n "ByFunction"] v] eq "Yes"} { + set funcinputName "function_$inputName" + set value [get_domnode_attribute [$group find n $funcinputName] v] + dict set paramDict $inputName $value + set printed 1 + } + } + if {!$printed} { + set value [gid_groups_conds::convert_value_to_default [$group find n $inputName]] + #set value [get_domnode_attribute [$group find n $inputName] v] + dict set paramDict $inputName [expr $value] + } + } elseif {$in_type eq "bool"} { + set value [get_domnode_attribute [$group find n $inputName] v] + set value [expr $value ? True : False] + dict set paramDict $inputName [expr $value] + } elseif {$in_type eq "tablefile"} { + set value [get_domnode_attribute [$group find n $inputName] v] + dict set paramDict $inputName $value + } else { + if {[get_domnode_attribute [$group find n $inputName] state] ne "hidden" } { + set value [get_domnode_attribute [$group find n $inputName] v] + dict set paramDict $inputName $value + } + } + } + if {[$group find n Interval] ne ""} {dict set paramDict interval [write::getInterval [get_domnode_attribute [$group find n Interval] v]] } + dict set processDict Parameters $paramDict + lappend bcCondsDict $processDict + } + return $bcCondsDict +} + Pfem::write::Init diff --git a/kratos.gid/apps/Pfem/write/writeProjectParameters.tcl b/kratos.gid/apps/Pfem/write/writeProjectParameters.tcl index c3632ee59..bc51d93ae 100644 --- a/kratos.gid/apps/Pfem/write/writeProjectParameters.tcl +++ b/kratos.gid/apps/Pfem/write/writeProjectParameters.tcl @@ -19,12 +19,12 @@ proc Pfem::write::getParametersDict { } { dict set projectParametersDict problem_process_list $problemProcessList ##### constraints_process_list - set group_constraints [write::getConditionsParametersDict PFEM_NodalConditions "Nodal"] + set group_constraints [Pfem::write::getConditionsParametersDict PFEM_NodalConditions "Nodal"] set body_constraints [Pfem::write::getBodyConditionsParametersDict PFEM_NodalConditions "Nodal"] dict set projectParametersDict constraints_process_list [concat $group_constraints $body_constraints] ##### loads_process_list - dict set projectParametersDict loads_process_list [write::getConditionsParametersDict PFEM_Loads] + dict set projectParametersDict loads_process_list [Pfem::write::getConditionsParametersDict PFEM_Loads] ##### Restart set output_process_list [GetPFEM_OutputProcessList] diff --git a/kratos.gid/apps/Solid/write/write.tcl b/kratos.gid/apps/Solid/write/write.tcl index 394f4f445..aac80c14e 100644 --- a/kratos.gid/apps/Solid/write/write.tcl +++ b/kratos.gid/apps/Solid/write/write.tcl @@ -325,4 +325,128 @@ proc Solid::write::GetUsedElements { {get "Objects"} } { return $lista } + + +proc Solid::write::getConditionsParametersDict {un {condition_type "Condition"}} { + + set root [customlib::GetBaseRoot] + + set bcCondsDict [list ] + + set xp1 "[spdAux::getRoute $un]/condition/group" + set groups [$root selectNodes $xp1] + if {$groups eq ""} { + set xp1 "[spdAux::getRoute $un]/group" + set groups [$root selectNodes $xp1] + } + foreach group $groups { + set groupName [$group @n] + set cid [[$group parent] @n] + set groupName [write::GetWriteGroupName $groupName] + set groupId [::write::getMeshId $cid $groupName] + set condId [[$group parent] @n] + if {$condition_type eq "Condition"} { + set condition [::Model::getCondition $condId] + } { + set condition [::Model::getNodalConditionbyId $condId] + } + set processName [$condition getProcessName] + set process [::Model::GetProcess $processName] + set processDict [dict create] + set paramDict [dict create] + dict set paramDict model_part_name $groupId + + set process_attributes [$process getAttributes] + set process_parameters [$process getInputs] + + dict set process_attributes process_name [dict get $process_attributes n] + dict unset process_attributes n + dict unset process_attributes pn + + set processDict [dict merge $processDict $process_attributes] + if {[$condition hasAttribute VariableName]} { + set variable_name [$condition getAttribute VariableName] + # "lindex" is a rough solution. Look for a better one. + if {$variable_name ne ""} {dict set paramDict variable_name [lindex $variable_name 0]} + } + foreach {inputName in_obj} $process_parameters { + set in_type [$in_obj getType] + if {$in_type eq "vector"} { + set vector_type [$in_obj getAttribute "vectorType"] + if {$vector_type eq "bool"} { + set ValX [expr [get_domnode_attribute [$group find n ${inputName}X] v] ? True : False] + set ValY [expr [get_domnode_attribute [$group find n ${inputName}Y] v] ? True : False] + set ValZ [expr False] + if {[$group find n ${inputName}Z] ne ""} {set ValZ [expr [get_domnode_attribute [$group find n ${inputName}Z] v] ? True : False]} + dict set paramDict $inputName [list $ValX $ValY $ValZ] + } { + if {[$in_obj getAttribute "enabled"] in [list "1" "0"]} { + foreach i [list "X" "Y" "Z"] { + if {[expr [get_domnode_attribute [$group find n Enabled_$i] v] ] ne "Yes"} { + set Val$i null + } else { + set printed 0 + if {[$in_obj getAttribute "function"] eq "1"} { + if {[get_domnode_attribute [$group find n "ByFunction$i"] v] eq "Yes"} { + set funcinputName "${i}function_$inputName" + set value [get_domnode_attribute [$group find n $funcinputName] v] + set Val$i $value + set printed 1 + } + } + if {!$printed} { + set value [expr [gid_groups_conds::convert_value_to_default [$group find n ${inputName}$i] ] ] + set Val$i $value + } + } + } + } elseif {$vector_type eq "tablefile" || $vector_type eq "file"} { + set ValX "[get_domnode_attribute [$group find n ${inputName}X] v]" + set ValY "[get_domnode_attribute [$group find n ${inputName}Y] v]" + set ValZ "0" + if {[$group find n ${inputName}Z] ne ""} {set ValZ "[get_domnode_attribute [$group find n ${inputName}Z] v]"} + } else { + set ValX [expr [gid_groups_conds::convert_value_to_default [$group find n ${inputName}X] ] ] + set ValY [expr [gid_groups_conds::convert_value_to_default [$group find n ${inputName}Y] ] ] + set ValZ [expr 0.0] + if {[$group find n ${inputName}Z] ne ""} {set ValZ [expr [gid_groups_conds::convert_value_to_default [$group find n ${inputName}Z] ]]} + } + dict set paramDict $inputName [list $ValX $ValY $ValZ] + } + } elseif {$in_type eq "double" || $in_type eq "integer"} { + set printed 0 + if {[$in_obj getAttribute "function"] eq "1"} { + if {[get_domnode_attribute [$group find n "ByFunction"] v] eq "Yes"} { + set funcinputName "function_$inputName" + set value [get_domnode_attribute [$group find n $funcinputName] v] + dict set paramDict $inputName $value + set printed 1 + } + } + if {!$printed} { + set value [gid_groups_conds::convert_value_to_default [$group find n $inputName]] + #set value [get_domnode_attribute [$group find n $inputName] v] + dict set paramDict $inputName [expr $value] + } + } elseif {$in_type eq "bool"} { + set value [get_domnode_attribute [$group find n $inputName] v] + set value [expr $value ? True : False] + dict set paramDict $inputName [expr $value] + } elseif {$in_type eq "tablefile"} { + set value [get_domnode_attribute [$group find n $inputName] v] + dict set paramDict $inputName $value + } else { + if {[get_domnode_attribute [$group find n $inputName] state] ne "hidden" } { + set value [get_domnode_attribute [$group find n $inputName] v] + dict set paramDict $inputName $value + } + } + } + if {[$group find n Interval] ne ""} {dict set paramDict interval [write::getInterval [get_domnode_attribute [$group find n Interval] v]] } + dict set processDict Parameters $paramDict + lappend bcCondsDict $processDict + } + return $bcCondsDict +} + Solid::write::Init diff --git a/kratos.gid/apps/Solid/write/writeProjectParameters.tcl b/kratos.gid/apps/Solid/write/writeProjectParameters.tcl index 7421271c6..5faf837d1 100644 --- a/kratos.gid/apps/Solid/write/writeProjectParameters.tcl +++ b/kratos.gid/apps/Solid/write/writeProjectParameters.tcl @@ -72,10 +72,10 @@ proc Solid::write::getParametersDict { } { dict set projectParametersDict solver_settings $solverSettingsDict # Lists of processes - set nodal_conditions_dict [write::getConditionsParametersDict SLNodalConditions "Nodal"] + set nodal_conditions_dict [Solid::write::getConditionsParametersDict SLNodalConditions "Nodal"] dict set projectParametersDict constraints_process_list $nodal_conditions_dict - dict set projectParametersDict loads_process_list [write::getConditionsParametersDict SLLoads] + dict set projectParametersDict loads_process_list [Solid::write::getConditionsParametersDict SLLoads] # GiD output configuration dict set projectParametersDict output_configuration [write::GetDefaultOutputDict] From f4b9f51aaa88bdf8d929e7bd01ad2dbddada08f1 Mon Sep 17 00:00:00 2001 From: Josep Maria Date: Wed, 11 Oct 2017 19:54:44 +0200 Subject: [PATCH 15/17] damage law name correction --- kratos.gid/apps/Solid/write/write.tcl | 4 ++-- kratos.gid/apps/Solid/xml/ConstitutiveLaws.xml | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/kratos.gid/apps/Solid/write/write.tcl b/kratos.gid/apps/Solid/write/write.tcl index aac80c14e..59c69a7a8 100644 --- a/kratos.gid/apps/Solid/write/write.tcl +++ b/kratos.gid/apps/Solid/write/write.tcl @@ -125,7 +125,7 @@ proc Solid::write::WriteMaterialsFile { } { variable validApps set filename "Materials.json" - set mats_json [getPropertiesList SLParts] + set mats_json [Solid::write::getPropertiesList SLParts] write::OpenFile $filename write::WriteJSON $mats_json @@ -136,7 +136,7 @@ proc Solid::write::WriteMaterialsFileOld { } { variable validApps set filename "Materials.json" - set mats_json [getPropertiesList SLParts] + set mats_json [Solid::write::getPropertiesList SLParts] write::OpenFile $filename write::WriteJSON $mats_json diff --git a/kratos.gid/apps/Solid/xml/ConstitutiveLaws.xml b/kratos.gid/apps/Solid/xml/ConstitutiveLaws.xml index c30046581..84022f879 100644 --- a/kratos.gid/apps/Solid/xml/ConstitutiveLaws.xml +++ b/kratos.gid/apps/Solid/xml/ConstitutiveLaws.xml @@ -277,7 +277,7 @@ - @@ -291,7 +291,7 @@ - @@ -305,7 +305,7 @@ - From 8bcf2816cff363b15e0f6edb883b47532527b3d2 Mon Sep 17 00:00:00 2001 From: Josep Maria Date: Sat, 14 Oct 2017 18:29:02 +0200 Subject: [PATCH 16/17] small change in logo --- kratos.gid/apps/Pfem/images/logo.png | Bin 19177 -> 16971 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/kratos.gid/apps/Pfem/images/logo.png b/kratos.gid/apps/Pfem/images/logo.png index 4d0514b9d0b880796d6735afd37979864a5486da..e23b3129d67081e82c53feb8e48cccb0493ae592 100644 GIT binary patch literal 16971 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 LNkvXXu0mjfG0@Y= literal 19177 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 Eg4rYl#{d8T From c19afe9140f51f3b1a5a879e974c4f46325f63c2 Mon Sep 17 00:00:00 2001 From: Josep Maria Date: Sun, 15 Oct 2017 17:52:05 +0200 Subject: [PATCH 17/17] move menu/nodes upwards --- kratos.gid/apps/Pfem/images/timeIntervals.png | Bin 273 -> 287 bytes kratos.gid/apps/Pfem/images/timeParams.png | Bin 0 -> 273 bytes kratos.gid/apps/Pfem/xml/GetFromXML.tcl | 2 +- kratos.gid/apps/Pfem/xml/Main.spd | 3 --- kratos.gid/apps/Pfem/xml/ModelType.spd | 16 ++++++++++++- kratos.gid/apps/Pfem/xml/NodalConditions.spd | 2 +- kratos.gid/apps/Pfem/xml/SolutionStrategy.spd | 13 +---------- kratos.gid/apps/Pfem/xml/Solvers.xml | 5 ++++ kratos.gid/apps/Pfem/xml/Strategies.xml | 22 +++++++++--------- .../apps/Solid/xml/BoundaryConditions.spd | 4 ++-- kratos.gid/apps/Solid/xml/Main.spd | 1 - .../apps/Solid/xml/SolutionStrategy.spd | 18 +++++--------- kratos.gid/apps/Solid/xml/StageInfo.spd | 9 ++++++- kratos.gid/apps/Solid/xml/Strategies.xml | 21 ++++++----------- 14 files changed, 57 insertions(+), 59 deletions(-) create mode 100644 kratos.gid/apps/Pfem/images/timeParams.png diff --git a/kratos.gid/apps/Pfem/images/timeIntervals.png b/kratos.gid/apps/Pfem/images/timeIntervals.png index 32d34192c4a7a1086ecd532ac49b5ecae44bed78..1f167f758d08e6f2c4f4e6af02529182eded7c9b 100644 GIT binary patch delta 212 zcmbQpG@ogL1SbnK0|UcJ=ctnt-R$cblf2zs7&=&GJ%ECo1s;*b3=G`DAk4@xYmNj^ zkiEpy*OmPt7eAi`i)69=44_b{r;B3<$Mxg{2e!5*wt#5~3mB$^?%mCBXvQ?DS!Rq! z9$ZOCNVv$d@rIOy#5-T+jb|hzDyBYfE?IqVZ}rP3SC}29ZSq@m?u@2Fu|r6#kKegD zj7G-`)C7E3R_=bnnPM5suqh&>K}U3htly#TRt3KYZzsQYEtFxpX90e@)#F*W0-l97d_rc2~A3HWI_b>9ym~e9ij~ z>V4|yFfCENgS6Z;M6?L{>{_*gRD=RkOHAwy5dZ)H07*qoM6N<$f?F3( AVgLXD diff --git a/kratos.gid/apps/Pfem/images/timeParams.png b/kratos.gid/apps/Pfem/images/timeParams.png new file mode 100644 index 0000000000000000000000000000000000000000..32d34192c4a7a1086ecd532ac49b5ecae44bed78 GIT binary patch literal 273 zcmeAS@N?(olHy`uVBq!ia0vp^f*{Pn3?z9rZ$AN~BuiW)N`mv#O3D+9QW+dm@{>{( zJaZG%Q-e|yQz{EjrrH1%83g!*xc>kDKPtT0P&aw)>Vvy>o}Sph#@;%wta$qTx!bN? zeQ@IVHD&q8=Eg-IKYq - - - diff --git a/kratos.gid/apps/Pfem/xml/ModelType.spd b/kratos.gid/apps/Pfem/xml/ModelType.spd index 0eac8291d..c2a1156e2 100644 --- a/kratos.gid/apps/Pfem/xml/ModelType.spd +++ b/kratos.gid/apps/Pfem/xml/ModelType.spd @@ -1,5 +1,5 @@ - + @@ -7,5 +7,19 @@ + + + + + + + + + + + + + + diff --git a/kratos.gid/apps/Pfem/xml/NodalConditions.spd b/kratos.gid/apps/Pfem/xml/NodalConditions.spd index 080a40ada..190d187be 100644 --- a/kratos.gid/apps/Pfem/xml/NodalConditions.spd +++ b/kratos.gid/apps/Pfem/xml/NodalConditions.spd @@ -1,5 +1,5 @@ - + diff --git a/kratos.gid/apps/Pfem/xml/SolutionStrategy.spd b/kratos.gid/apps/Pfem/xml/SolutionStrategy.spd index 5cf0fca22..1d321d811 100644 --- a/kratos.gid/apps/Pfem/xml/SolutionStrategy.spd +++ b/kratos.gid/apps/Pfem/xml/SolutionStrategy.spd @@ -1,16 +1,5 @@ - - - - - - - - - - - - + diff --git a/kratos.gid/apps/Pfem/xml/Solvers.xml b/kratos.gid/apps/Pfem/xml/Solvers.xml index edf5b5535..d0992de34 100644 --- a/kratos.gid/apps/Pfem/xml/Solvers.xml +++ b/kratos.gid/apps/Pfem/xml/Solvers.xml @@ -1,5 +1,10 @@ + + + + + diff --git a/kratos.gid/apps/Pfem/xml/Strategies.xml b/kratos.gid/apps/Pfem/xml/Strategies.xml index 7ae07a5ca..0b92fc501 100644 --- a/kratos.gid/apps/Pfem/xml/Strategies.xml +++ b/kratos.gid/apps/Pfem/xml/Strategies.xml @@ -43,29 +43,27 @@ - - - + + + - + - - @@ -108,8 +106,6 @@ - - @@ -217,8 +213,10 @@ --> - + + @@ -227,7 +225,9 @@ - + + + diff --git a/kratos.gid/apps/Solid/xml/BoundaryConditions.spd b/kratos.gid/apps/Solid/xml/BoundaryConditions.spd index f50ff3400..c6006f131 100644 --- a/kratos.gid/apps/Solid/xml/BoundaryConditions.spd +++ b/kratos.gid/apps/Solid/xml/BoundaryConditions.spd @@ -1,4 +1,4 @@ - + - \ No newline at end of file + diff --git a/kratos.gid/apps/Solid/xml/Main.spd b/kratos.gid/apps/Solid/xml/Main.spd index a233992de..29d4be6a3 100644 --- a/kratos.gid/apps/Solid/xml/Main.spd +++ b/kratos.gid/apps/Solid/xml/Main.spd @@ -2,7 +2,6 @@ - diff --git a/kratos.gid/apps/Solid/xml/SolutionStrategy.spd b/kratos.gid/apps/Solid/xml/SolutionStrategy.spd index c7f4097d4..30a8d295c 100644 --- a/kratos.gid/apps/Solid/xml/SolutionStrategy.spd +++ b/kratos.gid/apps/Solid/xml/SolutionStrategy.spd @@ -1,14 +1,8 @@ - - - - - - - - - - - - + + + + + + diff --git a/kratos.gid/apps/Solid/xml/StageInfo.spd b/kratos.gid/apps/Solid/xml/StageInfo.spd index 57de40111..d87a55eb7 100644 --- a/kratos.gid/apps/Solid/xml/StageInfo.spd +++ b/kratos.gid/apps/Solid/xml/StageInfo.spd @@ -3,6 +3,13 @@ - + + + + + + + + diff --git a/kratos.gid/apps/Solid/xml/Strategies.xml b/kratos.gid/apps/Solid/xml/Strategies.xml index 1034fa2d8..51bb1488f 100644 --- a/kratos.gid/apps/Solid/xml/Strategies.xml +++ b/kratos.gid/apps/Solid/xml/Strategies.xml @@ -43,35 +43,32 @@ - - - + + - - + + - + - - - + - - @@ -174,8 +169,6 @@ - -