diff --git a/iga/use_cases/iga_shell_3p_single_patch/ProjectParameters.json b/iga/use_cases/iga_shell_3p_single_patch/ProjectParameters.json new file mode 100644 index 00000000..07a373d0 --- /dev/null +++ b/iga/use_cases/iga_shell_3p_single_patch/ProjectParameters.json @@ -0,0 +1,124 @@ +{ + "problem_data": { + "problem_name": "embedded_plate", + "echo_level": 4, + "parallel_type": "OpenMP", + "start_time": 0.0, + "end_time": 1.0 + }, + "solver_settings" : { + "solver_type" : "static", + "analysis_type" : "linear", + "model_part_name" : "IgaModelPart", + "domain_size" : 3, + "echo_level": 2, + "model_import_settings" : { + "input_type" : "use_input_model_part" + }, + "material_import_settings" : { + "materials_filename" : "materials.json" + }, + "time_stepping" : { + "time_step" : 1.5 + }, + "rotation_dofs": false, + "reform_dofs_at_each_step": false, + "line_search": false, + "compute_reactions": true, + "block_builder": true, + "clear_storage": false, + "move_mesh_flag": true, + "convergence_criterion": "residual_criterion", + "displacement_relative_tolerance": 1e-8, + "displacement_absolute_tolerance": 1e-10, + "residual_relative_tolerance": 1e-8, + "residual_absolute_tolerance": 1e-10, + "max_iteration": 100, + "linear_solver_settings": {}, + "auxiliary_variables_list": [], + "auxiliary_dofs_list": [], + "auxiliary_reaction_list": [] +}, + "modelers": [ + { + "modeler_name": "CadIoModeler", + "Parameters": { + "echo_level": 0, + "cad_model_part_name": "IgaModelPart", + "geometry_file_name": "geometry.cad.json", + "output_geometry_file_name": "rectangular_plate_vibroacoustics_kratos_0.georhino.json" + } + }, + { + "modeler_name": "IgaModeler", + "Parameters": { + "echo_level": 1, + "cad_model_part_name": "IgaModelPart", + "analysis_model_part_name": "IgaModelPart", + "physics_file_name": "physics.iga.json" + } + }, + { + "modeler_name": "RefinementModeler", + "Parameters": { + "echo_level": 0, + "physics_file_name": "refinements.iga.json" + } + } + ], + "processes": { + "additional_processes": [{ + "kratos_module": "IgaApplication", + "python_module": "output_quadrature_domain_process", + "Parameters": { + "output_file_name": "rectangular_plate_vibroacoustics_kratos_shell_1_integrationdomain.json", + "model_part_name": "IgaModelPart.StructuralAnalysis_1", + "output_geometry_elements": true, + "output_geometry_conditions": false + } + }], + "dirichlet_process_list": [ + { + "kratos_module": "KratosMultiphysics", + "python_module": "assign_vector_variable_to_conditions_process", + "Parameters": { + "model_part_name": "IgaModelPart.Support_1", + "variable_name": "DISPLACEMENT", + "value": [ 0, 0, 0 ], + "interval": [ 0, "End" ] + } + } + ], + "neumann_process_list": [ + { + "kratos_module": "KratosMultiphysics", + "python_module": "assign_vector_variable_to_conditions_process", + "Parameters": { + "model_part_name": "IgaModelPart.Load_1", + "variable_name": "DEAD_LOAD", + "value": [ 1.0, 0, 0.0 ], + "interval": [ 0, "End" ] + } + } + ], + "constraints_process_list" : [], + "list_other_processes" : [] +}, +"output_processes": { + "output_process_list": [ + { + "kratos_module": "IgaApplication", + "python_module": "iga_output_process", + "Parameters": { + "nodal_results": [ "DISPLACEMENT", "POINT_LOAD", "REACTION"], + "integration_point_results": [], + "output_file_name": "rectangular_plate_vibroacoustics_kratos_shell_1.post.res", + "model_part_name": "IgaModelPart.StructuralAnalysis_1", + "file_label": "step", + "output_control_type": "time", + "output_frequency": 1.0 + } + } + ] +} +} \ No newline at end of file diff --git a/iga/use_cases/iga_shell_3p_single_patch/geometry.cad.json b/iga/use_cases/iga_shell_3p_single_patch/geometry.cad.json new file mode 100644 index 00000000..72c5d147 --- /dev/null +++ b/iga/use_cases/iga_shell_3p_single_patch/geometry.cad.json @@ -0,0 +1,235 @@ +{ + "tolerances": { "model_tolerance": 0.001 }, + "version_number": 1, + "breps": [ + { + "brep_id": 1, + "faces": [ + { + "brep_id": 2, + "swapped_surface_normal": false, + "surface": { + "is_trimmed": true, + "is_rational": false, + "degrees": [ 1, 1 ], + "knot_vectors": [ + [ 0, 0, 1, 1 ], + [ 0, 0, 0.5, 0.5 ] + ], + "control_points": [ + [ + 1, + [ 0, 0, 0, 1 ] + ], + [ + 2, + [ 1, 0, 0, 1 ] + ], + [ + 3, + [ 0, 0.5, 0, 1 ] + ], + [ + 4, + [ 1, 0.5, 0, 1 ] + ] + ] + }, + "boundary_loops": [ + { + "loop_type": "outer", + "trimming_curves": [ + { + "trim_index": 0, + "curve_direction": true, + "parameter_curve": { + "is_rational": false, + "degree": 1, + "knot_vector": [ 0, 0, 1, 1 ], + "active_range": [ 0, 1 ], + "control_points": [ + [ + 5, + [ 0, 0, 0, 1 ] + ], + [ + 6, + [ 1, 0, 0, 1 ] + ] + ] + } + }, + { + "trim_index": 1, + "curve_direction": true, + "parameter_curve": { + "is_rational": false, + "degree": 1, + "knot_vector": [ 0, 0, 0.5, 0.5 ], + "active_range": [ 0, 0.5 ], + "control_points": [ + [ + 7, + [ 1, 0, 0, 1 ] + ], + [ + 8, + [ 1, 0.5, 0, 1 ] + ] + ] + } + }, + { + "trim_index": 2, + "curve_direction": true, + "parameter_curve": { + "is_rational": false, + "degree": 1, + "knot_vector": [ 0, 0, 1, 1 ], + "active_range": [ 0, 1 ], + "control_points": [ + [ + 9, + [ 1, 0.5, 0, 1 ] + ], + [ + 10, + [ 0, 0.5, 0, 1 ] + ] + ] + } + }, + { + "trim_index": 3, + "curve_direction": true, + "parameter_curve": { + "is_rational": false, + "degree": 1, + "knot_vector": [ 0, 0, 0.5, 0.5 ], + "active_range": [ 0, 0.5 ], + "control_points": [ + [ + 11, + [ 0, 0.5, 0, 1 ] + ], + [ + 12, + [ 0, 0, 0, 1 ] + ] + ] + } + } + ] + } + ], + "embedded_loops": [], + "embedded_edges": [], + "embedded_points": [] + } + ], + "edges": [ + { + "brep_id": 3, + "3d_curve": { + "degree": 1, + "knot_vector": [ 0, 0, 1, 1 ], + "active_range": [ 0, 1 ], + "control_points": [ + [ + 13, + [ 0, 0, 0, 1 ] + ], + [ + 14, + [ 1, 0, 0, 1 ] + ] + ] + }, + "topology": [ + { + "brep_id": 2, + "trim_index": 0, + "relative_direction": true + } + ] + }, + { + "brep_id": 4, + "3d_curve": { + "degree": 1, + "knot_vector": [ 0, 0, 0.5, 0.5 ], + "active_range": [ 0, 0.5 ], + "control_points": [ + [ + 15, + [ 1, 0, 0, 1 ] + ], + [ + 16, + [ 1, 0.5, 0, 1 ] + ] + ] + }, + "topology": [ + { + "brep_id": 2, + "trim_index": 1, + "relative_direction": true + } + ] + }, + { + "brep_id": 5, + "3d_curve": { + "degree": 1, + "knot_vector": [ -1, -1, 0, 0 ], + "active_range": [ -1, 0 ], + "control_points": [ + [ + 17, + [ 1, 0.5, 0, 1 ] + ], + [ + 18, + [ 0, 0.5, 0, 1 ] + ] + ] + }, + "topology": [ + { + "brep_id": 2, + "trim_index": 2, + "relative_direction": true + } + ] + }, + { + "brep_id": 6, + "3d_curve": { + "degree": 1, + "knot_vector": [ -0.5, -0.5, 0, 0 ], + "active_range": [ -0.5, 0 ], + "control_points": [ + [ + 19, + [ 0, 0.5, 0, 1 ] + ], + [ + 20, + [ 0, 0, 0, 1 ] + ] + ] + }, + "topology": [ + { + "brep_id": 2, + "trim_index": 3, + "relative_direction": true + } + ] + } + ], + "vertices": [] + } + ] +} diff --git a/iga/use_cases/iga_shell_3p_single_patch/kratos_main_iga.py b/iga/use_cases/iga_shell_3p_single_patch/kratos_main_iga.py new file mode 100644 index 00000000..414a69cb --- /dev/null +++ b/iga/use_cases/iga_shell_3p_single_patch/kratos_main_iga.py @@ -0,0 +1,11 @@ +import KratosMultiphysics +import KratosMultiphysics.IgaApplication +from KratosMultiphysics.StructuralMechanicsApplication.structural_mechanics_analysis import StructuralMechanicsAnalysis + +if __name__ == "__main__": + with open("ProjectParameters.json",'r') as parameter_file: + parameters = KratosMultiphysics.Parameters(parameter_file.read()) + + model = KratosMultiphysics.Model() + simulation = StructuralMechanicsAnalysis(model, parameters) + simulation.Run() \ No newline at end of file diff --git a/iga/use_cases/iga_shell_3p_single_patch/materials.json b/iga/use_cases/iga_shell_3p_single_patch/materials.json new file mode 100644 index 00000000..8d6ecefb --- /dev/null +++ b/iga/use_cases/iga_shell_3p_single_patch/materials.json @@ -0,0 +1,27 @@ +{ + "properties": [ + { + "model_part_name": "IgaModelPart", + "properties_id": 1, + "Material": { + "name": "Steel", + "constitutive_law": { "name": "LinearElasticPlaneStress2DLaw" }, + "Variables": { + "THICKNESS": 1.0, + "YOUNG_MODULUS": 1.0e6, + "POISSON_RATIO": 0.0, + "DENSITY": 1000.0 + }, + "Tables": {} + } + }, + { + "model_part_name": "IgaModelPart.Support_1", + "properties_id": 3, + "Material": { + "Variables": { "PENALTY_FACTOR": 1000000000.1 }, + "Tables": {} + } + } + ] +} diff --git a/iga/use_cases/iga_shell_3p_single_patch/physics.iga.json b/iga/use_cases/iga_shell_3p_single_patch/physics.iga.json new file mode 100755 index 00000000..b4e75228 --- /dev/null +++ b/iga/use_cases/iga_shell_3p_single_patch/physics.iga.json @@ -0,0 +1,34 @@ +{ + "element_condition_list": [ + { + "brep_ids": [ 2 ], + "geometry_type": "GeometrySurface", + "iga_model_part": "StructuralAnalysis_1", + "parameters": { + "type": "element", + "name": "Shell3pElement", + "shape_function_derivatives_order": 6 + } + }, + { + "brep_ids": [ 4 ], + "geometry_type": "GeometrySurface", + "iga_model_part": "Load_1", + "parameters": { + "type": "condition", + "name": "LoadCondition", + "shape_function_derivatives_order": 6 + } + }, + { + "brep_ids": [6], + "geometry_type": "SurfaceEdge", + "iga_model_part": "Support_1", + "parameters": { + "type": "condition", + "name": "SupportPenaltyCondition", + "shape_function_derivatives_order": 2 + } + } + ] +} diff --git a/iga/use_cases/iga_shell_3p_single_patch/refinements.iga.json b/iga/use_cases/iga_shell_3p_single_patch/refinements.iga.json new file mode 100755 index 00000000..0dedcc16 --- /dev/null +++ b/iga/use_cases/iga_shell_3p_single_patch/refinements.iga.json @@ -0,0 +1,16 @@ +{ + "refinements": [ + { + "brep_ids": [ 2 ], + "geometry_type": "NurbsSurface", + "model_part_name": "IgaModelPart", + "parameters": { + "insert_nb_per_span_u": 10, + "insert_nb_per_span_v": 10, + "increase_degree_u": 1, + "increase_degree_v": 1 + } + } + ] +} +