Python Script Tutorial: Writing a JSon configuration file

From KratosWiki
(Difference between revisions)
Jump to: navigation, search
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
   }
}
Personal tools
Categories