Edit me

Introduction

VertexMorphingShapeControl is used to control the shape of a specified domain (given by a model part). This control can use either Explicit Vertex Morphing or Implicit Vertex Morphing as the filtering method. Therefore, the physical space gradients will be transformed to smoothened vertex morphed control space gradients.

This has an inbuilt mesh motion solver to solve for the mesh once the shape is changed. Therefore, it requires to have mesh motion settings as well.

Json settings

Explicit vertex morphing

Following json snippet illustrates one use case of explicit vertex morphing

{
    "name": "explicit_shape_control",
    "type": "shape.vertex_morphing_shape_control",
    "module" : "KratosMultiphysics.OptimizationApplication.controls",
    "settings":{
        "controlled_model_part_names": [],
        "filter_settings": {
            "type" : "surface_explicit",
            "filter_function_type" : "linear",
            "damping_function_type" : "sigmoidal",
            "radius": 0.000000000001,
            "max_nodes_in_filter_radius": 1000
        },
        "mesh_motion_settings" : {},
        "output_all_fields": false,
        "fixed_model_parts": {},
    }
}
Option Allowed values
name A unique string name
type “shape.vertex_morphing_shape_control”
module “KratosMultiphysics.OptimizationApplication.model_part_controllers”
controlled_model_part_names List of model part names of which the shape should be controlled.
filter_settings::type “surface_explicit”
filter_settings::filter_function_type Types of filter functions to be used. “gaussian”, “linear”, “constant”, “cosine”, “quartic” are supported.
filter_settings::damping_function_type Type of the damping function to be used. “gaussian”, “linear”, “constant”, “cosine”, “quartic” “sigmoidal” are supported.
filter_settings::radius Filter radius
filter_settings::max_nodes_in_filter_radius Number of max nodes to be found in the filter radius. This specifies maximum number of neighbours will be searched for. If the radii is higher, or mesh is refined, then this number should be increased.
mesh_motion_settings Mesh motion solver settings
output_all_fields Output intermediate results also to the OptimizationProblem data container.
fixed_model_parts List of model part names to be dampened

Implicit vertex morphing

Following json snippet illustrates one use case of explicit vertex morphing

{
    "name": "implicit_shape_control",
    "type": "shape.vertex_morphing_shape_control",
    "module" : "KratosMultiphysics.OptimizationApplication.controls",
    "settings":{
        "controlled_model_part_names": [],
            "filter_settings": {
                "type" : "bulk_surface_implicit",
                "radius": 0.000000000001,
                "linear_solver_settings" : {}
            },
            "mesh_motion_settings" : {},
            "output_all_fields": false,
            "fixed_model_parts": {},
    }
}
Option Allowed values
name A unique string name
type “shape.vertex_morphing_shape_control”
module “KratosMultiphysics.OptimizationApplication.model_part_controllers”
controlled_model_part_names List of model part names of which the shape should be controlled.
filter_settings::type “bulk_surface_implicit”
filter_settings::radius Filter radius
filter_settings::linear_solver_settings Linear solver to be used in the implicit vertex morphing solver
mesh_motion_settings Mesh motion solver settings
output_all_fields Output intermediate results also to the OptimizationProblem data container.
fixed_model_parts List of model part names to be dampened

Source files