Python Script Tutorial: Writing a JSon configuration file

From KratosWiki
Revision as of 16:21, 1 June 2016 by Rrossi (Talk | contribs)
Jump to: navigation, search

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
   }
}
Personal tools
Categories