diff --git a/kratos.gid/apps/MPM/app.json b/kratos.gid/apps/MPM/app.json
index 15be6fd97..5aead7bd5 100644
--- a/kratos.gid/apps/MPM/app.json
+++ b/kratos.gid/apps/MPM/app.json
@@ -40,7 +40,8 @@
"unique_names": {
"parts": "MPMParts",
"nodal_conditions": "MPMNodalConditions",
- "conditions": "MPMLoads"
+ "conditions": "MPMLoads",
+ "initial_conditions": "MPMInitialConditions"
},
"write": {
"coordinates": "all",
diff --git a/kratos.gid/apps/MPM/examples/CantileverBeam.tcl b/kratos.gid/apps/MPM/examples/CantileverBeam.tcl
index ce4fcd84c..4b0fc76a1 100644
--- a/kratos.gid/apps/MPM/examples/CantileverBeam.tcl
+++ b/kratos.gid/apps/MPM/examples/CantileverBeam.tcl
@@ -153,8 +153,8 @@ proc ::MPM::examples::CantileverBeam::TreeAssignation2D {args} {
# Solution strategy parameters
spdAux::SetValueOnTreeItem v "0.01" MPTimeParameters DeltaTime
spdAux::SetValueOnTreeItem v "10" MPTimeParameters EndTime
- spdAux::SetValueOnTreeItem v "wtep" GiDOptions OutputControlType
- spdAux::SetValueOnTreeItem v "0.1" GiDOptions OutputDeltaTime
- spdAux::SetValueOnTreeItem v "time" VtkOptions OutputControlType
- spdAux::SetValueOnTreeItem v "0.1" VtkOptions OutputDeltaTime
+ spdAux::SetValueOnTreeItem v "step" GiDOptions OutputControlType
+ spdAux::SetValueOnTreeItem v "1" GiDOptions OutputDeltaTime
+ spdAux::SetValueOnTreeItem v "step" VtkOptions OutputControlType
+ spdAux::SetValueOnTreeItem v "1" VtkOptions OutputDeltaTime
}
diff --git a/kratos.gid/apps/MPM/examples/FallingSandBall.tcl b/kratos.gid/apps/MPM/examples/FallingSandBall.tcl
index ea02008e6..7f98a5003 100644
--- a/kratos.gid/apps/MPM/examples/FallingSandBall.tcl
+++ b/kratos.gid/apps/MPM/examples/FallingSandBall.tcl
@@ -124,6 +124,9 @@ proc ::MPM::examples::FallingSandBall::TreeAssignation2D {args} {
set props [list Element GRID$nd ]
spdAux::SetValuesOnBaseNode $mpm_grid_part $props
+ # Set Initial Conditions Off
+ spdAux::SetValueOnTreeItem v "Off" InitialCondition
+
# Fix Displacement
## Create interval subgroup
GiD_Groups clone FixedDisplacement Total
@@ -149,8 +152,8 @@ proc ::MPM::examples::FallingSandBall::TreeAssignation2D {args} {
# Solution strategy parameters
spdAux::SetValueOnTreeItem v "0.005" MPTimeParameters DeltaTime
spdAux::SetValueOnTreeItem v "2" MPTimeParameters EndTime
- spdAux::SetValueOnTreeItem v "time" GiDOptions OutputControlType
- spdAux::SetValueOnTreeItem v "0.02" GiDOptions OutputDeltaTime
- spdAux::SetValueOnTreeItem v "time" VtkOptions OutputControlType
- spdAux::SetValueOnTreeItem v "0.02" VtkOptions OutputDeltaTime
+ spdAux::SetValueOnTreeItem v "step" GiDOptions OutputControlType
+ spdAux::SetValueOnTreeItem v "4" GiDOptions OutputDeltaTime
+ spdAux::SetValueOnTreeItem v "step" VtkOptions OutputControlType
+ spdAux::SetValueOnTreeItem v "4" VtkOptions OutputDeltaTime
}
diff --git a/kratos.gid/apps/MPM/examples/GranularFlow.tcl b/kratos.gid/apps/MPM/examples/GranularFlow.tcl
index ada892092..1f9730a43 100644
--- a/kratos.gid/apps/MPM/examples/GranularFlow.tcl
+++ b/kratos.gid/apps/MPM/examples/GranularFlow.tcl
@@ -152,8 +152,8 @@ proc ::MPM::examples::GranularFlow::TreeAssignation2D {args} {
# Solution strategy parameters
spdAux::SetValueOnTreeItem v "0.00005" MPTimeParameters DeltaTime
spdAux::SetValueOnTreeItem v "2" MPTimeParameters EndTime
- spdAux::SetValueOnTreeItem v "time" GiDOptions OutputControlType
- spdAux::SetValueOnTreeItem v "0.01" GiDOptions OutputDeltaTime
- spdAux::SetValueOnTreeItem v "time" VtkOptions OutputControlType
- spdAux::SetValueOnTreeItem v "0.01" VtkOptions OutputDeltaTime
+ spdAux::SetValueOnTreeItem v "step" GiDOptions OutputControlType
+ spdAux::SetValueOnTreeItem v "200" GiDOptions OutputDeltaTime
+ spdAux::SetValueOnTreeItem v "step" VtkOptions OutputControlType
+ spdAux::SetValueOnTreeItem v "200" VtkOptions OutputDeltaTime
}
diff --git a/kratos.gid/apps/MPM/examples/examples.tcl b/kratos.gid/apps/MPM/examples/examples.tcl
index c9eafdaef..d61f0d249 100644
--- a/kratos.gid/apps/MPM/examples/examples.tcl
+++ b/kratos.gid/apps/MPM/examples/examples.tcl
@@ -4,10 +4,13 @@ namespace eval ::MPM::examples {
}
+
proc ::MPM::examples::ErasePreviousIntervals { } {
set root [customlib::GetBaseRoot]
set interval_base [spdAux::getRoute "Intervals"]
foreach int [$root selectNodes "$interval_base/blockdata\[@n='Interval'\]"] {
if {[$int @name] ni [list Initial Total Custom1]} {$int delete}
}
-}
\ No newline at end of file
+
+}
+
diff --git a/kratos.gid/apps/MPM/write/write.tcl b/kratos.gid/apps/MPM/write/write.tcl
index ed6adb166..c5e0c420f 100644
--- a/kratos.gid/apps/MPM/write/write.tcl
+++ b/kratos.gid/apps/MPM/write/write.tcl
@@ -14,6 +14,7 @@ proc MPM::write::Init { } {
SetAttribute parts_un [::MPM::GetUniqueName parts]
SetAttribute nodal_conditions_un [::MPM:::GetUniqueName nodal_conditions]
SetAttribute conditions_un [::MPM::GetUniqueName conditions]
+ SetAttribute initial_conditions_un [::MPM::GetUniqueName initial_conditions]
SetAttribute writeCoordinatesByGroups [::MPM::GetWriteProperty coordinates]
SetAttribute main_launch_file [::MPM::GetAttribute main_launch_file]
@@ -146,6 +147,9 @@ proc MPM::write::writeSubmodelparts { type } {
# A Condition y a meshes-> salvo lo que no tenga topologia
writeLoads
+ } else {
+ # Write the initial conditions submodelpart
+ write::writeNodalConditions [GetAttribute initial_conditions_un]
}
}
diff --git a/kratos.gid/apps/MPM/write/writeProjectParameters.tcl b/kratos.gid/apps/MPM/write/writeProjectParameters.tcl
index 685e9f779..1ad032b41 100644
--- a/kratos.gid/apps/MPM/write/writeProjectParameters.tcl
+++ b/kratos.gid/apps/MPM/write/writeProjectParameters.tcl
@@ -1,10 +1,9 @@
# Project Parameters
proc ::MPM::write::getParametersDict { } {
set project_parameters_dict [Structural::write::getParametersDict]
-
+
# Analysis stage field
- dict set project_parameters_dict analysis_stage "KratosMultiphysics.MPMApplication.mpm_analysis"
-
+ dict set project_parameters_dict analysis_stage "KratosMultiphysics.MPMApplication.particle_mechanics_analysis"
# Quasi-static must be written as Quasi-static...
set solutiontype [write::getValue STSoluType]
dict set project_parameters_dict solver_settings solver_type $solutiontype
@@ -12,38 +11,39 @@ proc ::MPM::write::getParametersDict { } {
dict set project_parameters_dict solver_settings time_integration_method [write::getValue STSolStrat]
dict set project_parameters_dict solver_settings scheme_type [write::getValue STcheme]
}
-
+
# Time Parameters
if {$solutiontype eq "Dynamic"} {
dict unset project_parameters_dict solver_settings time_stepping "time_step_table"
dict set project_parameters_dict solver_settings time_stepping "time_step" [write::getValue MPTimeParameters DeltaTime]
dict set project_parameters_dict problem_data start_time [write::getValue MPTimeParameters StartTime]
dict set project_parameters_dict problem_data end_time [write::getValue MPTimeParameters EndTime]
- }
+ }
+
# Change the model part name
dict set project_parameters_dict solver_settings model_part_name MPM_Material
-
+
# create grid_import_settings
set grid_import_settings_dict [dict get $project_parameters_dict solver_settings model_import_settings]
dict append grid_import_settings_dict input_filename _Grid
dict set project_parameters_dict solver_settings grid_model_import_settings $grid_import_settings_dict
-
+
# add _Body to model_import_settings
set model_import_settings_dict [dict get $project_parameters_dict solver_settings model_import_settings]
dict append model_import_settings_dict input_filename _Body
if {[write::isBooleanTrue [write::getValue EnableRestartOutput]]} {dict set model_import_settings_dict restart_load_file_label " "}
dict set project_parameters_dict solver_settings model_import_settings $model_import_settings_dict
-
-
+
+
# materials file
dict set project_parameters_dict solver_settings material_import_settings materials_filename [GetAttribute materials_file]
-
+
# Axis-symmetric flag
if {$::Model::SpatialDimension eq "2Da"} {
dict set project_parameters_dict solver_settings axis_symmetric_flag true
}
-
+
# Pressure dofs
set check_list [list "MPMUpdatedLagrangianUP2D" "MPMUpdatedLagrangianUP3D"]
foreach elem $check_list {
@@ -51,36 +51,36 @@ proc ::MPM::write::getParametersDict { } {
dict set project_parameters_dict solver_settings pressure_dofs true
set active_stab [write::getValue STStratParams ActivateStabilization]
if {$active_stab eq "Off"} {
- dict set project_parameters_dict solver_settings stabilization "none"
+ dict set project_parameters_dict solver_settings stabilization "none"
} else {
- dict set project_parameters_dict solver_settings stabilization "ppp"
+ set stab_type [write::getValue STStratParams stabilization]
+ dict set project_parameters_dict solver_settings stabilization $stab_type
}
dict unset project_parameters_dict solver_settings ActivateStabilization
break
} else {
dict set project_parameters_dict solver_settings pressure_dofs false
- dict unset project_parameters_dict solver_settings activate_stabilization
dict unset project_parameters_dict solver_settings stabilization
}
}
-
-
+
+
# Rotation dofs
dict unset project_parameters_dict solver_settings rotation_dofs
-
+
# Line search
dict unset project_parameters_dict solver_settings line_search
-
+
# Volumetric strain dofs
dict unset project_parameters_dict solver_settings strain_dofs
dict unset project_parameters_dict solver_settings volumetric_strain_dofs
-
+
# Add the solver information
set solverSettingsDict [dict get $project_parameters_dict solver_settings]
set solverSettingsDict [dict merge $solverSettingsDict [write::getSolversParametersDict MPM] ]
dict lappend solverSettingsDict auxiliary_variables_list RAYLEIGH_ALPHA
dict set project_parameters_dict solver_settings $solverSettingsDict
-
+
# Move slip to constraints
set slip_process_list [list ]
set new_load_process_list [list ]
@@ -94,6 +94,14 @@ proc ::MPM::write::getParametersDict { } {
}
dict set project_parameters_dict processes loads_process_list $new_load_process_list
dict set project_parameters_dict processes list_other_processes $slip_process_list
+
+ # Initial Conditions
+ set previous_mpn [write::GetConfigurationAttribute model_part_name]
+ write::SetConfigurationAttribute model_part_name MPM_Material
+ set initial_conditions_list [write::getConditionsParametersDict [GetAttribute initial_conditions_un] "Nodal"]
+ dict set project_parameters_dict processes initial_conditions_processes $initial_conditions_list
+ #dict set project_parameters_dict processes initial_conditions_processes $initial_conditions_list Parameteres model_part_name MPM_Material
+ write::SetConfigurationAttribute model_part_name $previous_mpn
# Gravity
set activate_gravity [write::getValue ActivateGravity]
@@ -110,20 +118,74 @@ proc ::MPM::write::getParametersDict { } {
dict set gravity_parameters_dict direction [list [expr $dx] [expr $dy] [expr $dz]]
dict set gravity_dict Parameters $gravity_parameters_dict
dict set project_parameters_dict processes gravity [list $gravity_dict]
+ }
+
+ # Tracking of mp points
+ lassign [write::getValue MPTracking ActivateTracking] track
+ if {$track eq "On"} {
+ set tracking_dict [dict create ]
+ dict set tracking_dict python_module mpm_point_output_process
+ dict set tracking_dict kratos_module "KratosMultiphysics.MPMApplication"
+ dict set tracking_dict process_name MPMPointOutputProcess
+ set tracking_parameters_dict [dict create ]
+ dict set tracking_parameters_dict model_part_name MPM_Material
+ lassign [write::getValue MPTracking position] dx dy dz
+ dict set tracking_parameters_dict position [list [expr $dx] [expr $dy] [expr $dz]]
+ lassign [write::getValue MPTracking interval] t0 tf
+ dict set tracking_parameters_dict interval [list [expr $t0] [expr $tf]]
+ lassign [write::getValue MPTracking output_press] press
+ if {$press eq "Yes"} {
+ dict set tracking_parameters_dict output_pressure true
+ } else {
+ dict set tracking_parameters_dict output_pressure false
}
-
+ dict set tracking_parameters_dict print_format [write::getValue MPTracking print_format]
+ dict set tracking_parameters_dict write_tracking_output_file true
+ set output_file_settings_dict [dict create ]
+ dict set output_file_settings_dict file_name "MP_tracking.dat"
+ dict set tracking_parameters_dict output_file_settings $output_file_settings_dict
+ dict set tracking_dict Parameters $tracking_parameters_dict
+ dict set project_parameters_dict processes mp_tracking [list $tracking_dict]
+ }
+
+
+
+ # Tracking of Grid points
+ lassign [write::getValue GridTracking ActivateTrackingGrid] track
+ if {$track eq "On"} {
+ set tracking_dict [dict create ]
+ dict set tracking_dict python_module point_output_process
+ dict set tracking_dict kratos_module "KratosMultiphysics"
+ dict set tracking_dict process_name PointOutputProcess
+ set tracking_parameters_dict [dict create ]
+ dict set tracking_parameters_dict model_part_name Background_Grid
+ lassign [write::getValue GridTracking positionGrid] dx dy dz
+ dict set tracking_parameters_dict position [list [expr $dx] [expr $dy] [expr $dz]]
+ lassign [write::getValue GridTracking intervalGrid] t0 tf
+ dict set tracking_parameters_dict interval [list [expr $t0] [expr $tf]]
+
+ dict set tracking_parameters_dict print_format [write::getValue GridTracking print_formatGrid]
+ dict set tracking_parameters_dict entity_type element
+ dict set tracking_parameters_dict search_configuration initial
+ dict set tracking_parameters_dict output_variables [list "DISPLACEMENT" "VELOCITY"]
+ set output_file_settings_dict [dict create ]
+ dict set output_file_settings_dict file_name "Grid_point_tracking.dat"
+ dict set tracking_parameters_dict output_file_settings $output_file_settings_dict
+ dict set tracking_dict Parameters $tracking_parameters_dict
+ dict set project_parameters_dict processes grid_point_tracking [list $tracking_dict]
+ }
+
# Output processes
dict set project_parameters_dict output_processes [MPM::write::GetOutputProcessesList]
-
-
+
# REMOVE RAYLEIGH
dict set project_parameters_dict solver_settings auxiliary_variables_list [list NORMAL IS_STRUCTURE]
dict unset project_parameters_dict solver_settings rayleigh_alpha
dict unset project_parameters_dict solver_settings rayleigh_beta
-
+
# REMOVE use_old_stiffness_in_first_iteration
dict unset project_parameters_dict solver_settings use_old_stiffness_in_first_iteration
-
+
return $project_parameters_dict
}
@@ -133,8 +195,6 @@ proc write::GetResultsList { un {cnd ""} } {
return [GetResultsByXPathList $xp1]
}
-
-
proc ::MPM::write::GetOutputProcessesList { } {
set output_process [dict create]
@@ -166,7 +226,6 @@ proc ::MPM::write::GetOutputProcessesList { } {
dict set grid_output_configuration_dict Parameters output_name [dict get $project_parameters_dict solver_settings grid_model_import_settings input_filename]
dict unset body_output_configuration_dict Parameters postprocess_parameters result_file_configuration nodal_results
-
dict unset grid_output_configuration_dict Parameters postprocess_parameters result_file_configuration gauss_point_results
@@ -184,49 +243,68 @@ proc ::MPM::write::GetOutputProcessesList { } {
set need_vtk [write::getValue EnableVtkOutput]
if {[write::isBooleanTrue $need_vtk]} {
#set vtk_options_xpath "[spdAux::getRoute $results_UN]/container\[@n='VtkOutput'\]/container\[@n='VtkOptions'\]"
+ set print_vtk [write::getValue VtkOptions PrintOption]
+ set body_output_configuration_dict [lindex [dict get $project_parameters_dict output_processes vtk_output] 0]
+
+ dict set body_output_configuration_dict python_module particle_vtk_output_process
+ dict set body_output_configuration_dict kratos_module KratosMultiphysics.MPMApplication
+ dict set body_output_configuration_dict process_name ParticleVtkOutputProcess
+ dict set body_output_configuration_dict Parameters model_part_name MPM_Material
+ dict unset body_output_configuration_dict Parameters nodal_data_value_variables
+ dict unset body_output_configuration_dict Parameters element_data_value_variables
+ dict unset body_output_configuration_dict Parameters condition_data_value_variables
+ dict unset body_output_configuration_dict Parameters nodal_solution_step_data_variables
+ #dict unset body_output_configuration_dict Parameters output_interval
+ #set outputCT [getValueByXPath $vtk_options_xpath OutputControlType]
+ #dict set resultDict output_control_type $outputCT
+ #if {$outputCT eq "time"} {set frequency [getValueByXPath $vtk_options_xpath OutputDeltaTime]} {set frequency [getValueByXPath $vtk_options_xpath OutputDeltaStep]}
+
+
+ dict set body_output_configuration_dict Parameters output_path "vtk_output_Body"
+ dict unset body_output_configuration_dict Parameters gauss_point_variables_extrapolated_to_nodes
+ dict set body_output_configuration_dict Parameters gauss_point_variables_in_elements [write::GetResultsList ElementResults]
+ dict set project_parameters_dict output_processes body_output_process [list $body_output_configuration_dict]
+ set grid_output_configuration_dict [lindex [dict get $project_parameters_dict output_processes vtk_output] 0]
+ dict set body_output_configuration_dict python_module mpm_vtk_output_process
+ dict set body_output_configuration_dict kratos_module KratosMultiphysics.MPMApplication
+ dict set body_output_configuration_dict process_name MPMVtkOutputProcess
+ dict set body_output_configuration_dict Parameters model_part_name MPM_Material
+ dict unset body_output_configuration_dict Parameters nodal_data_value_variables
+ dict unset body_output_configuration_dict Parameters element_data_value_variables
+ dict unset body_output_configuration_dict Parameters condition_data_value_variables
+ dict unset body_output_configuration_dict Parameters nodal_solution_step_data_variables
+ #dict unset body_output_configuration_dict Parameters output_interval
+ #set outputCT [getValueByXPath $vtk_options_xpath OutputControlType]
+ #dict set resultDict output_control_type $outputCT
+ #if {$outputCT eq "time"} {set frequency [getValueByXPath $vtk_options_xpath OutputDeltaTime]} {set frequency [getValueByXPath $vtk_options_xpath OutputDeltaStep]}
+ dict set body_output_configuration_dict Parameters output_path "vtk_output_Body"
+ dict unset body_output_configuration_dict Parameters gauss_point_variables_extrapolated_to_nodes
+ dict set body_output_configuration_dict Parameters gauss_point_variables_in_elements [write::GetResultsList ElementResults]
+
+
+ dict set grid_output_configuration_dict Parameters model_part_name Background_Grid
+ dict unset grid_output_configuration_dict Parameters gauss_point_variables_extrapolated_to_nodes
+ dict unset grid_output_configuration_dict Parameters nodal_data_value_variables
+ dict unset grid_output_configuration_dict Parameters element_data_value_variables
+ dict unset grid_output_configuration_dict Parameters condition_data_value_variables
+ dict unset grid_output_configuration_dict Parameters gauss_point_results
- set body_output_configuration_dict [lindex [dict get $project_parameters_dict output_processes vtk_output] 0]
- set grid_output_configuration_dict [lindex [dict get $project_parameters_dict output_processes vtk_output] 0]
-
-
- dict set body_output_configuration_dict python_module mpm_vtk_output_process
- dict set body_output_configuration_dict kratos_module KratosMultiphysics.MPMApplication
- dict set body_output_configuration_dict process_name MPMVtkOutputProcess
- dict set body_output_configuration_dict Parameters model_part_name MPM_Material
- dict unset body_output_configuration_dict Parameters nodal_data_value_variables
- dict unset body_output_configuration_dict Parameters element_data_value_variables
- dict unset body_output_configuration_dict Parameters condition_data_value_variables
- dict unset body_output_configuration_dict Parameters nodal_solution_step_data_variables
- #dict unset body_output_configuration_dict Parameters output_interval
- #set outputCT [getValueByXPath $vtk_options_xpath OutputControlType]
- #dict set resultDict output_control_type $outputCT
- #if {$outputCT eq "time"} {set frequency [getValueByXPath $vtk_options_xpath OutputDeltaTime]} {set frequency [getValueByXPath $vtk_options_xpath OutputDeltaStep]}
- dict set body_output_configuration_dict Parameters output_path "vtk_output_Body"
- dict unset body_output_configuration_dict Parameters gauss_point_variables_extrapolated_to_nodes
- dict set body_output_configuration_dict Parameters gauss_point_variables_in_elements [write::GetResultsList ElementResults]
-
-
- dict set grid_output_configuration_dict Parameters model_part_name Background_Grid
- dict unset grid_output_configuration_dict Parameters gauss_point_variables_extrapolated_to_nodes
- dict unset grid_output_configuration_dict Parameters nodal_data_value_variables
- dict unset grid_output_configuration_dict Parameters element_data_value_variables
- dict unset grid_output_configuration_dict Parameters condition_data_value_variables
-
-
- dict set project_parameters_dict output_processes body_output_process [list $body_output_configuration_dict]
#dict set project_parameters_dict output_processes grid_output_process [list $grid_output_configuration_dict]
dict unset project_parameters_dict output_processes vtk_output
- dict unset grid_output_configuration_dict Parameters gauss_point_results
# Append the fluid and solid output processes to the output processes list
- lappend vtk_output_processes_list $grid_output_configuration_dict
- lappend vtk_output_processes_list $body_output_configuration_dict
+ if {$print_vtk eq "grid"} {lappend vtk_output_processes_list $grid_output_configuration_dict}
+ if {$print_vtk eq "body"} {lappend vtk_output_processes_list $body_output_configuration_dict}
+ if {$print_vtk eq "both"} {lappend vtk_output_processes_list $grid_output_configuration_dict
+ lappend vtk_output_processes_list $body_output_configuration_dict}
+
dict set output_process vtk_output_processes $vtk_output_processes_list
}
# Restart
+
set need_restart [write::getValue EnableRestartOutput]
if {[write::isBooleanTrue $need_restart]} {
set restart_dict [dict create ]
@@ -241,9 +319,9 @@ proc ::MPM::write::GetOutputProcessesList { } {
if {$restOutputCT eq "time"} {dict set restart_parameters_dict restart_save_frequency [write::getValue RestartOptions OutputDeltaTime]} {dict set restart_parameters_dict restart_save_frequency [write::getValue RestartOptions OutputDeltaStep]}
dict set restart_dict Parameters $restart_parameters_dict
dict set output_process save_restart_process [list $restart_dict]
-
- }
-
+
+ }
+
return $output_process
}
@@ -251,3 +329,6 @@ proc ::MPM::write::GetOutputProcessesList { } {
proc ::MPM::write::writeParametersEvent { } {
write::WriteJSON [getParametersDict]
}
+
+
+
diff --git a/kratos.gid/apps/MPM/xml/BoundaryConditions.spd b/kratos.gid/apps/MPM/xml/BoundaryConditions.spd
index c33eca7ec..a8cd99315 100644
--- a/kratos.gid/apps/MPM/xml/BoundaryConditions.spd
+++ b/kratos.gid/apps/MPM/xml/BoundaryConditions.spd
@@ -1,5 +1,5 @@
-
-
+
+
diff --git a/kratos.gid/apps/MPM/xml/Conditions.xml b/kratos.gid/apps/MPM/xml/Conditions.xml
index f59bab02e..ab3d98ca5 100644
--- a/kratos.gid/apps/MPM/xml/Conditions.xml
+++ b/kratos.gid/apps/MPM/xml/Conditions.xml
@@ -118,6 +118,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/kratos.gid/apps/MPM/xml/ConstitutiveLaws.xml b/kratos.gid/apps/MPM/xml/ConstitutiveLaws.xml
index 27c9bd31a..110cf0951 100644
--- a/kratos.gid/apps/MPM/xml/ConstitutiveLaws.xml
+++ b/kratos.gid/apps/MPM/xml/ConstitutiveLaws.xml
@@ -127,7 +127,34 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -158,6 +185,7 @@
+
@@ -174,6 +202,7 @@
+
@@ -207,6 +236,7 @@
+
@@ -234,6 +264,7 @@
+
@@ -242,7 +273,7 @@
-
+
@@ -251,4 +282,22 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/kratos.gid/apps/MPM/xml/Elements.xml b/kratos.gid/apps/MPM/xml/Elements.xml
index 2b525d42e..a43421e68 100644
--- a/kratos.gid/apps/MPM/xml/Elements.xml
+++ b/kratos.gid/apps/MPM/xml/Elements.xml
@@ -152,7 +152,6 @@
-
@@ -211,5 +210,4 @@
-
diff --git a/kratos.gid/apps/MPM/xml/InitialConditions.spd b/kratos.gid/apps/MPM/xml/InitialConditions.spd
new file mode 100644
index 000000000..a91ce3578
--- /dev/null
+++ b/kratos.gid/apps/MPM/xml/InitialConditions.spd
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/kratos.gid/apps/MPM/xml/Loads.spd b/kratos.gid/apps/MPM/xml/Loads.spd
new file mode 100644
index 000000000..6485615ac
--- /dev/null
+++ b/kratos.gid/apps/MPM/xml/Loads.spd
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/kratos.gid/apps/MPM/xml/Main.spd b/kratos.gid/apps/MPM/xml/Main.spd
index 3d237ffa4..4a1efde91 100644
--- a/kratos.gid/apps/MPM/xml/Main.spd
+++ b/kratos.gid/apps/MPM/xml/Main.spd
@@ -2,6 +2,7 @@
+
diff --git a/kratos.gid/apps/MPM/xml/NodalConditions.xml b/kratos.gid/apps/MPM/xml/NodalConditions.xml
index 63b5747fe..01650422a 100644
--- a/kratos.gid/apps/MPM/xml/NodalConditions.xml
+++ b/kratos.gid/apps/MPM/xml/NodalConditions.xml
@@ -1,10 +1,14 @@
-
-
-
-
+
+
+
+
+
-
+
+
+
+
+
diff --git a/kratos.gid/apps/MPM/xml/NonConformingBoundaryConditions.spd b/kratos.gid/apps/MPM/xml/NonConformingBoundaryConditions.spd
new file mode 100644
index 000000000..9143b4828
--- /dev/null
+++ b/kratos.gid/apps/MPM/xml/NonConformingBoundaryConditions.spd
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/kratos.gid/apps/MPM/xml/Processes.xml b/kratos.gid/apps/MPM/xml/Processes.xml
index c9dbd5bd1..eee93904f 100644
--- a/kratos.gid/apps/MPM/xml/Processes.xml
+++ b/kratos.gid/apps/MPM/xml/Processes.xml
@@ -1,18 +1,46 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/kratos.gid/apps/MPM/xml/Procs.spd b/kratos.gid/apps/MPM/xml/Procs.spd
index 962b02097..2525b6871 100644
--- a/kratos.gid/apps/MPM/xml/Procs.spd
+++ b/kratos.gid/apps/MPM/xml/Procs.spd
@@ -1,9 +1,9 @@
-
+
diff --git a/kratos.gid/apps/MPM/xml/Results.spd b/kratos.gid/apps/MPM/xml/Results.spd
index 7f90bf664..c0e9c4ce0 100644
--- a/kratos.gid/apps/MPM/xml/Results.spd
+++ b/kratos.gid/apps/MPM/xml/Results.spd
@@ -9,7 +9,7 @@
-
+
@@ -40,6 +40,7 @@
+
@@ -49,6 +50,31 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/kratos.gid/apps/MPM/xml/SolutionStrategy.spd b/kratos.gid/apps/MPM/xml/SolutionStrategy.spd
index 7006a6400..1139f66d4 100644
--- a/kratos.gid/apps/MPM/xml/SolutionStrategy.spd
+++ b/kratos.gid/apps/MPM/xml/SolutionStrategy.spd
@@ -8,8 +8,8 @@
-
-
+
+
diff --git a/kratos.gid/apps/MPM/xml/Strategies.xml b/kratos.gid/apps/MPM/xml/Strategies.xml
index 2483a4d00..66c61ae95 100644
--- a/kratos.gid/apps/MPM/xml/Strategies.xml
+++ b/kratos.gid/apps/MPM/xml/Strategies.xml
@@ -1,8 +1,9 @@
-
+
+
@@ -28,9 +29,10 @@
-
+
+
diff --git a/kratos.gid/apps/MPM/xml/XmlController.tcl b/kratos.gid/apps/MPM/xml/XmlController.tcl
index 707ebc6f7..68a7503da 100644
--- a/kratos.gid/apps/MPM/xml/XmlController.tcl
+++ b/kratos.gid/apps/MPM/xml/XmlController.tcl
@@ -4,13 +4,18 @@ namespace eval MPM::xml {
}
+
proc MPM::xml::Init { } {
# Namespace variables inicialization
Model::InitVariables dir $::MPM::dir
+
# Import our elements
Model::ForgetElements
Model::getElements Elements.xml
+
+ Model::ForgetSolutionStrategies
+ Model::getSolutionStrategies Strategies.xml
Model::ForgetSolutionStrategies
Model::getSolutionStrategies Strategies.xml
@@ -46,6 +51,49 @@ proc MPM::xml::Init { } {
}
+proc ::MPM::xml::ProcGetSolutionStrategiesMPM { domNode args } {
+ set names ""
+ set pnames ""
+ set solutionType [get_domnode_attribute [$domNode selectNodes [spdAux::getRoute STSoluType]] v]
+ set Sols [::Model::GetSolutionStrategies [list "SolutionType" $solutionType] ]
+ set ids [list ]
+ foreach ss $Sols {
+ lappend ids [$ss getName]
+ append names [$ss getName] ","
+ append pnames [$ss getName] "," [$ss getPublicName] ","
+ }
+ set names [string range $names 0 end-1]
+ set pnames [string range $pnames 0 end-1]
+
+ $domNode setAttribute values $names
+ set dv [lindex $ids 0]
+ if {[$domNode getAttribute v] eq ""} {$domNode setAttribute v $dv}
+ if {[$domNode getAttribute v] ni $ids} {$domNode setAttribute v $dv}
+ #spdAux::RequestRefresh
+ return $pnames
+}
+
+
+proc ::MPM::xml::ProcCheckNodalConditionStateMPM {domNode args} {
+ # Overwritten the base function to add Solution Type restrictions
+ set parts_un STParts
+ if {[spdAux::getRoute $parts_un] ne ""} {
+ set conditionId [$domNode @n]
+ set condition [Model::getNodalConditionbyId $conditionId]
+ set cnd_dim [$condition getAttribute WorkingSpaceDimension]
+ if {$cnd_dim ne ""} {
+ if {$cnd_dim ne $Model::SpatialDimension} {return "hidden"}
+ }
+ set elems [$domNode selectNodes "[spdAux::getRoute $parts_un]/condition/group/value\[@n='Element'\]"]
+ set elemnames [list ]
+ foreach elem $elems { lappend elemnames [$elem @v]}
+ set elemnames [lsort -unique $elemnames]
+
+ set solutionType [get_domnode_attribute [$domNode selectNodes [spdAux::getRoute STSoluType]] v]
+ set params [list analysis_type $solutionType]
+ if {[::Model::CheckElementsNodalCondition $conditionId $elemnames $params]} {return "normal"} else {return "hidden"}
+ } {return "normal"}
+}
proc MPM::xml::MultiAppEvent {args} {
if {$args eq "init"} {
@@ -77,7 +125,7 @@ proc MPM::xml::ProcCheckGeometry {domNode args} {
proc MPM::xml::ProcCheckActivateStabilizationState {domNode args} {
set ret "hidden"
- set up_mixed UpdatedLagrangianUP$::Model::SpatialDimension
+ set up_mixed MPMUpdatedLagrangianUP$::Model::SpatialDimension
set used_elements [::MPM::write::GetUsedElements Name]
if {$up_mixed in $used_elements} {
set ret "normal"
diff --git a/kratos.gid/apps/Structural/xml/Strategies.xml b/kratos.gid/apps/Structural/xml/Strategies.xml
index c61617adc..63efd263f 100644
--- a/kratos.gid/apps/Structural/xml/Strategies.xml
+++ b/kratos.gid/apps/Structural/xml/Strategies.xml
@@ -103,4 +103,5 @@
-
\ No newline at end of file
+
+
diff --git a/kratos.gid/scripts/Writing/WriteProjectParameters.tcl b/kratos.gid/scripts/Writing/WriteProjectParameters.tcl
index 2ed2690e5..26c77d5bb 100644
--- a/kratos.gid/scripts/Writing/WriteProjectParameters.tcl
+++ b/kratos.gid/scripts/Writing/WriteProjectParameters.tcl
@@ -571,7 +571,7 @@ proc write::GetDefaultParametersOutputVTKDict { {appid ""} } {
set outputCT [getValueByXPath $vtk_options_xpath OutputControlType]
dict set resultDict output_control_type $outputCT
if {$outputCT eq "time"} {set frequency [getValueByXPath $vtk_options_xpath OutputDeltaTime]} {set frequency [getValueByXPath $vtk_options_xpath OutputDeltaStep]}
- dict set resultDict output_interval $frequency
+ dict set resultDict output_interval $frequency
dict set resultDict file_format [getValueByXPath $vtk_options_xpath VtkFileFormat]
dict set resultDict output_precision 7
dict set resultDict output_sub_model_parts "false"
@@ -645,6 +645,7 @@ proc write::GetModelersDict { projectParametersDict {stage ""} } {
+
# what can be element, condition
proc write::GetMatchSubModelPart { what {stage ""} } {
set model_part_basename [write::GetConfigurationAttribute model_part_name]
@@ -708,7 +709,6 @@ proc write::GetMatchSubModelPart { what {stage ""} } {
return $elements_list
}
-
# in the xml file, look up to find if some of the ancestors define a property modelpartname
proc write::GetModelPartNameFromParentTree { group {stage ""} } {
set modelpart_name ""
@@ -729,4 +729,4 @@ proc write::GetModelPartNameFromParentTree { group {stage ""} } {
incr safety
}
return $modelpart_name
-}
\ No newline at end of file
+}