Python Script Tutorial: Writing a JSon configuration file
From KratosWiki
(Difference between revisions)
Line 11: | Line 11: | ||
The typical structure of a JSon file is like the following: | The typical structure of a JSon file is like the following: | ||
+ | { | ||
+ | "problem_data" : { | ||
+ | "problem_name" : "minimal_structure", | ||
+ | "model_part_name" : "Structure", | ||
+ | "domain_size" : 2, | ||
+ | "time_step" : 1.1, | ||
+ | "start_time" : 0.0, | ||
+ | "end_time" : 1.0, | ||
+ | "echo_level" : 0 | ||
+ | }, | ||
+ | "solver_settings" : { | ||
+ | "solver_type" : "solid_mechanics_static_solver", | ||
+ | "echo_level" : 0, | ||
+ | "solution_type" : "Static", | ||
+ | "analysis_type" : "Linear", | ||
+ | "model_import_settings" : { | ||
+ | "input_type" : "mdpa", | ||
+ | "input_filename" : "minimal_structure" | ||
+ | }, | ||
+ | "line_search" : false, | ||
+ | "convergence_criterion" : "Residual_criterion", | ||
+ | "displacement_relative_tolerance" : 0.0001, | ||
+ | "displacement_absolute_tolerance" : 1e-9, | ||
+ | "residual_relative_tolerance" : 0.0001, | ||
+ | "residual_absolute_tolerance" : 1e-9, | ||
+ | "max_iteration" : 10, | ||
+ | "linear_solver_settings" : { | ||
+ | "solver_type" : "Super_LU", | ||
+ | "scaling" : false, | ||
+ | "verbosity" : 0 | ||
+ | }, | ||
+ | "problem_domain_sub_model_part_list" : ["Parts_Parts_Auto2"], | ||
+ | "processes_sub_model_part_list" : ["DISPLACEMENT_Displacement_Auto1","SelfWeight2D_Self_weight_Auto1"], | ||
+ | "rotation_dofs" : false | ||
+ | }, | ||
+ | "constraints_process_list" : [{ | ||
+ | "implemented_in_file" : "impose_vector_value_by_components_process", | ||
+ | "implemented_in_module" : "KratosMultiphysics", | ||
+ | "help" : "This process fixes the selected components of a given vector variable", | ||
+ | "process_name" : "ImposeVectorValueByComponentsProcess", | ||
+ | "Parameters" : { | ||
+ | "mesh_id" : 0, | ||
+ | "model_part_name" : "DISPLACEMENT_Displacement_Auto1", | ||
+ | "variable_name" : "DISPLACEMENT", | ||
+ | "is_fixed_x" : true, | ||
+ | "is_fixed_y" : true, | ||
+ | "is_fixed_z" : true, | ||
+ | "value" : [0.0,0.0,0.0] | ||
+ | } | ||
+ | }], | ||
+ | "loads_process_list" : [{ | ||
+ | "implemented_in_file" : "process_factory", | ||
+ | "implemented_in_module" : "KratosMultiphysics", | ||
+ | "check" : "DirectorVectorNonZero direction", | ||
+ | "help" : "This process ", | ||
+ | "process_name" : "ApplyConstantVectorValueProcess", | ||
+ | "Parameters" : { | ||
+ | "mesh_id" : 0, | ||
+ | "model_part_name" : "SelfWeight2D_Self_weight_Auto1", | ||
+ | "variable_name" : "VOLUME_ACCELERATION", | ||
+ | "factor" : 9.8, | ||
+ | "direction" : [10.0,0.0,0.0] | ||
+ | } | ||
+ | }], | ||
+ | "output_configuration" : { | ||
+ | "result_file_configuration" : { | ||
+ | "gidpost_flags" : { | ||
+ | "GiDPostMode" : "GiD_PostBinary", | ||
+ | "WriteDeformedMeshFlag" : "WriteDeformed", | ||
+ | "WriteConditionsFlag" : "WriteConditions", | ||
+ | "MultiFileFlag" : "SingleFile" | ||
+ | }, | ||
+ | "file_label" : "step", | ||
+ | "output_control_type" : "step", | ||
+ | "output_frequency" : 1.0, | ||
+ | "body_output" : true, | ||
+ | "node_output" : false, | ||
+ | "skin_output" : false, | ||
+ | "plane_output" : [], | ||
+ | "nodal_results" : ["DISPLACEMENT","REACTION"], | ||
+ | "gauss_point_results" : ["VON_MISES_STRESS"] | ||
+ | }, | ||
+ | "point_data_configuration" : [] | ||
+ | }, | ||
+ | "restart_options" : { | ||
+ | "SaveRestart" : false, | ||
+ | "RestartFrequency" : 0, | ||
+ | "LoadRestart" : false, | ||
+ | "Restart_Step" : 0 | ||
+ | }, | ||
+ | "constraints_data" : { | ||
+ | "incremental_load" : false, | ||
+ | "incremental_displacement" : false | ||
+ | } | ||
+ | } |
Revision as of 16:21, 1 June 2016
As complexity increases one needs more and more flexibility in “configuring” a simulation. This is typically achieved by defining a "configuration file" which organizes all of the "user instructions" to be used in the configuration of the solver.
Some requirements for this configuration are:
- Must allow nesting of parameters (tree-like structure)
- Should allow using default values
- Must allow some form of type checking
- Should permit to echo all of the defaults in a single place
In order to meet such requirements Kratos introduces a "Parameters" object, which provides a thin wrapper to JSon strings.
The typical structure of a JSon file is like the following:
{ "problem_data" : { "problem_name" : "minimal_structure", "model_part_name" : "Structure", "domain_size" : 2, "time_step" : 1.1, "start_time" : 0.0, "end_time" : 1.0, "echo_level" : 0 }, "solver_settings" : { "solver_type" : "solid_mechanics_static_solver", "echo_level" : 0, "solution_type" : "Static", "analysis_type" : "Linear", "model_import_settings" : { "input_type" : "mdpa", "input_filename" : "minimal_structure" }, "line_search" : false, "convergence_criterion" : "Residual_criterion", "displacement_relative_tolerance" : 0.0001, "displacement_absolute_tolerance" : 1e-9, "residual_relative_tolerance" : 0.0001, "residual_absolute_tolerance" : 1e-9, "max_iteration" : 10, "linear_solver_settings" : { "solver_type" : "Super_LU", "scaling" : false, "verbosity" : 0 }, "problem_domain_sub_model_part_list" : ["Parts_Parts_Auto2"], "processes_sub_model_part_list" : ["DISPLACEMENT_Displacement_Auto1","SelfWeight2D_Self_weight_Auto1"], "rotation_dofs" : false }, "constraints_process_list" : [{ "implemented_in_file" : "impose_vector_value_by_components_process", "implemented_in_module" : "KratosMultiphysics", "help" : "This process fixes the selected components of a given vector variable", "process_name" : "ImposeVectorValueByComponentsProcess", "Parameters" : { "mesh_id" : 0, "model_part_name" : "DISPLACEMENT_Displacement_Auto1", "variable_name" : "DISPLACEMENT", "is_fixed_x" : true, "is_fixed_y" : true, "is_fixed_z" : true, "value" : [0.0,0.0,0.0] } }], "loads_process_list" : [{ "implemented_in_file" : "process_factory", "implemented_in_module" : "KratosMultiphysics", "check" : "DirectorVectorNonZero direction", "help" : "This process ", "process_name" : "ApplyConstantVectorValueProcess", "Parameters" : { "mesh_id" : 0, "model_part_name" : "SelfWeight2D_Self_weight_Auto1", "variable_name" : "VOLUME_ACCELERATION", "factor" : 9.8, "direction" : [10.0,0.0,0.0] } }], "output_configuration" : { "result_file_configuration" : { "gidpost_flags" : { "GiDPostMode" : "GiD_PostBinary", "WriteDeformedMeshFlag" : "WriteDeformed", "WriteConditionsFlag" : "WriteConditions", "MultiFileFlag" : "SingleFile" }, "file_label" : "step", "output_control_type" : "step", "output_frequency" : 1.0, "body_output" : true, "node_output" : false, "skin_output" : false, "plane_output" : [], "nodal_results" : ["DISPLACEMENT","REACTION"], "gauss_point_results" : ["VON_MISES_STRESS"] }, "point_data_configuration" : [] }, "restart_options" : { "SaveRestart" : false, "RestartFrequency" : 0, "LoadRestart" : false, "Restart_Step" : 0 }, "constraints_data" : { "incremental_load" : false, "incremental_displacement" : false } }