diff --git a/input/3d-shape-mesh-target-opt.json b/input/3d-shape-mesh-target-opt.json index 8c7fa05..ff4793d 100644 --- a/input/3d-shape-mesh-target-opt.json +++ b/input/3d-shape-mesh-target-opt.json @@ -145,5 +145,24 @@ { "path": "3d-shape-mesh-target.json" } - ] -} + ], + "solver": { + "advanced": { + "characteristic_force_density": 1, + "characteristic_length": 1 + }, + "nonlinear": { + "norm_type": "Euclidean", + "first_grad_norm_tol": 1e-10, + "grad_norm_tol": 1e-08, + "x_delta_tol": 0, + "advanced": { + "f_delta_tol": 0, + "derivative_along_delta_x_tol": 0 + }, + "line_search": { + "use_grad_norm_tol": 1e-06 + } + } + } +} \ No newline at end of file diff --git a/input/3d-shape-mesh-target.json b/input/3d-shape-mesh-target.json index c7b2cbc..9121a6b 100644 --- a/input/3d-shape-mesh-target.json +++ b/input/3d-shape-mesh-target.json @@ -92,7 +92,22 @@ { "type": "GradientDescent" } - ] + ], + "norm_type": "Euclidean", + "first_grad_norm_tol": 1e-10, + "grad_norm_tol": 1e-08, + "x_delta_tol": 0, + "advanced": { + "f_delta_tol": 0, + "derivative_along_delta_x_tol": 0 + }, + "line_search": { + "use_grad_norm_tol": 1e-06 + } + }, + "advanced": { + "characteristic_force_density": 1, + "characteristic_length": 1 } }, "boundary_conditions": { diff --git a/input/barycenter-opt.json b/input/barycenter-opt.json index 1192249..951ddce 100644 --- a/input/barycenter-opt.json +++ b/input/barycenter-opt.json @@ -6,15 +6,12 @@ "composition": [] } ], - "parameters": [ - - ], + "parameters": [], "functionals": [ { "type": "transient_integral", "state": 0, - "static_objective": - { + "static_objective": { "type": "center-target", "state": 0, "target_state": 1, @@ -29,5 +26,24 @@ { "path": "barycenter-target.json" } - ] + ], + "solver": { + "advanced": { + "characteristic_force_density": 1, + "characteristic_length": 1 + }, + "nonlinear": { + "norm_type": "Euclidean", + "first_grad_norm_tol": 1e-10, + "grad_norm_tol": 1e-08, + "x_delta_tol": 0, + "advanced": { + "f_delta_tol": 0, + "derivative_along_delta_x_tol": 0 + }, + "line_search": { + "use_grad_norm_tol": 1e-06 + } + } + } } \ No newline at end of file diff --git a/input/barycenter-target.json b/input/barycenter-target.json index 5526e23..d817f81 100644 --- a/input/barycenter-target.json +++ b/input/barycenter-target.json @@ -44,14 +44,31 @@ }, "solver": { "linear": { - "solver": ["Eigen::PardisoLDLT","Eigen::SimplicialLDLT"] + "solver": [ + "Eigen::PardisoLDLT", + "Eigen::SimplicialLDLT" + ] }, "nonlinear": { - "grad_norm": 1e-5, - "max_iterations": 200 + "max_iterations": 200, + "norm_type": "Euclidean", + "first_grad_norm_tol": 2e-12, + "grad_norm_tol": 2.0000000000000002e-07, + "x_delta_tol": 0.0, + "advanced": { + "f_delta_tol": 0.0, + "derivative_along_delta_x_tol": 0.0 + }, + "line_search": { + "use_grad_norm_tol": 2e-08 + } }, "contact": { - "barrier_stiffness": 1e5 + "barrier_stiffness": 100000.0 + }, + "advanced": { + "characteristic_force_density": 1, + "characteristic_length": 1 } }, "boundary_conditions": { diff --git a/input/barycenter.json b/input/barycenter.json index 6d5a942..82644db 100644 --- a/input/barycenter.json +++ b/input/barycenter.json @@ -44,14 +44,31 @@ }, "solver": { "linear": { - "solver": ["Eigen::PardisoLDLT","Eigen::SimplicialLDLT"] + "solver": [ + "Eigen::PardisoLDLT", + "Eigen::SimplicialLDLT" + ] }, "nonlinear": { - "grad_norm": 1e-5, - "max_iterations": 200 + "max_iterations": 200, + "norm_type": "Euclidean", + "first_grad_norm_tol": 2e-12, + "grad_norm_tol": 2.0000000000000002e-07, + "x_delta_tol": 0.0, + "advanced": { + "f_delta_tol": 0.0, + "derivative_along_delta_x_tol": 0.0 + }, + "line_search": { + "use_grad_norm_tol": 2e-08 + } }, "contact": { - "barrier_stiffness": 1e5 + "barrier_stiffness": 100000.0 + }, + "advanced": { + "characteristic_force_density": 1, + "characteristic_length": 1 } }, "boundary_conditions": { diff --git a/input/control-pressure-nodes-3d-opt.json b/input/control-pressure-nodes-3d-opt.json index 8ffd1f3..a6083f8 100644 --- a/input/control-pressure-nodes-3d-opt.json +++ b/input/control-pressure-nodes-3d-opt.json @@ -130,5 +130,23 @@ "path": "control-pressure-nodes-3d.json" } ], - "solver": {} -} + "solver": { + "advanced": { + "characteristic_force_density": 1, + "characteristic_length": 1 + }, + "nonlinear": { + "norm_type": "Euclidean", + "first_grad_norm_tol": 1e-10, + "grad_norm_tol": 1e-08, + "x_delta_tol": 0, + "advanced": { + "f_delta_tol": 0, + "derivative_along_delta_x_tol": 0 + }, + "line_search": { + "use_grad_norm_tol": 1e-06 + } + } + } +} \ No newline at end of file diff --git a/input/control-pressure-nodes-3d.json b/input/control-pressure-nodes-3d.json index 6925f13..c287abd 100644 --- a/input/control-pressure-nodes-3d.json +++ b/input/control-pressure-nodes-3d.json @@ -93,7 +93,22 @@ "Newton": { "use_psd_projection": false, "use_psd_projection_in_regularized": false + }, + "norm_type": "Euclidean", + "first_grad_norm_tol": 2e-12, + "grad_norm_tol": 2e-10, + "x_delta_tol": 0.0, + "advanced": { + "f_delta_tol": 0.0, + "derivative_along_delta_x_tol": 0.0 + }, + "line_search": { + "use_grad_norm_tol": 2e-08 } + }, + "advanced": { + "characteristic_force_density": 1, + "characteristic_length": 1 } }, "boundary_conditions": { @@ -147,7 +162,7 @@ { "id": 1, "type": "NeoHookean", - "E": 1e5, + "E": 100000.0, "nu": 0.3 } ], diff --git a/input/damping-transient-opt.json b/input/damping-transient-opt.json index 7a6665a..5766346 100644 --- a/input/damping-transient-opt.json +++ b/input/damping-transient-opt.json @@ -1,22 +1,43 @@ { "variable_to_simulation": [ - + { + "type": "damping", + "state": 0, + "composition": [ + { + "type": "slice", + "parameter_index": 0 + } + ] + } ], "parameters": [ - + { + "number": 2, + "initial": [ + 10, + 10 + ] + } ], "functionals": [ { "type": "transient_integral", - "static_objective": - { + "static_objective": { "type": "target", "state": 0, "target_state": 1, "matching": "exact", - "volume_selection": [1], - "surface_selection": [1], - "reference_cached_body_ids": [1, 3] + "volume_selection": [ + 1 + ], + "surface_selection": [ + 1 + ], + "reference_cached_body_ids": [ + 1, + 3 + ] }, "state": 0 } @@ -31,7 +52,22 @@ ], "solver": { "nonlinear": { - "debug_fd_eps": 1e-3 + "debug_fd_eps": 0.001, + "norm_type": "Euclidean", + "first_grad_norm_tol": 1e-10, + "grad_norm_tol": 1e-08, + "x_delta_tol": 0, + "advanced": { + "f_delta_tol": 0, + "derivative_along_delta_x_tol": 0 + }, + "line_search": { + "use_grad_norm_tol": 1e-06 + } + }, + "advanced": { + "characteristic_force_density": 1, + "characteristic_length": 1 } } } \ No newline at end of file diff --git a/input/damping-transient-target.json b/input/damping-transient-target.json index 88984bf..e4ecf06 100644 --- a/input/damping-transient-target.json +++ b/input/damping-transient-target.json @@ -58,15 +58,30 @@ }, "solver": { "linear": { - "solver": ["Eigen::PardisoLDLT","Eigen::SimplicialLDLT"] + "solver": [ + "Eigen::PardisoLDLT", + "Eigen::SimplicialLDLT" + ] }, "nonlinear": { "line_search": { - "use_grad_norm_tol": 1e-3 + "use_grad_norm_tol": 1e-05 + }, + "norm_type": "Euclidean", + "first_grad_norm_tol": 1e-12, + "grad_norm_tol": 1e-10, + "x_delta_tol": 0.0, + "advanced": { + "f_delta_tol": 0.0, + "derivative_along_delta_x_tol": 0.0 } }, "contact": { "barrier_stiffness": 100000.0 + }, + "advanced": { + "characteristic_force_density": 1, + "characteristic_length": 1 } }, "boundary_conditions": { diff --git a/input/damping-transient.json b/input/damping-transient.json index 519da7a..b049ac7 100644 --- a/input/damping-transient.json +++ b/input/damping-transient.json @@ -58,15 +58,30 @@ }, "solver": { "linear": { - "solver": ["Eigen::PardisoLDLT","Eigen::SimplicialLDLT"] + "solver": [ + "Eigen::PardisoLDLT", + "Eigen::SimplicialLDLT" + ] }, "nonlinear": { "line_search": { - "use_grad_norm_tol": 1e-3 + "use_grad_norm_tol": 1e-05 + }, + "norm_type": "Euclidean", + "first_grad_norm_tol": 1e-12, + "grad_norm_tol": 1e-10, + "x_delta_tol": 0.0, + "advanced": { + "f_delta_tol": 0.0, + "derivative_along_delta_x_tol": 0.0 } }, "contact": { "barrier_stiffness": 100000.0 + }, + "advanced": { + "characteristic_force_density": 1, + "characteristic_length": 1 } }, "boundary_conditions": { diff --git a/input/dirichlet-nodes-3d-opt.json b/input/dirichlet-nodes-3d-opt.json index e09a2a7..54c1045 100644 --- a/input/dirichlet-nodes-3d-opt.json +++ b/input/dirichlet-nodes-3d-opt.json @@ -28,5 +28,23 @@ "path": "dirichlet-nodes-3d.json" } ], - "solver": {} + "solver": { + "advanced": { + "characteristic_force_density": 1, + "characteristic_length": 1 + }, + "nonlinear": { + "norm_type": "Euclidean", + "first_grad_norm_tol": 1e-10, + "grad_norm_tol": 1e-08, + "x_delta_tol": 0, + "advanced": { + "f_delta_tol": 0, + "derivative_along_delta_x_tol": 0 + }, + "line_search": { + "use_grad_norm_tol": 1e-06 + } + } + } } \ No newline at end of file diff --git a/input/dirichlet-nodes-3d.json b/input/dirichlet-nodes-3d.json index aeb8e9a..e42bb5b 100644 --- a/input/dirichlet-nodes-3d.json +++ b/input/dirichlet-nodes-3d.json @@ -19,6 +19,23 @@ "solver": { "linear": { "solver": "Eigen::SimplicialLDLT" + }, + "advanced": { + "characteristic_force_density": 1, + "characteristic_length": 1 + }, + "nonlinear": { + "norm_type": "Euclidean", + "first_grad_norm_tol": 1e-10, + "grad_norm_tol": 1e-08, + "x_delta_tol": 0, + "advanced": { + "f_delta_tol": 0, + "derivative_along_delta_x_tol": 0 + }, + "line_search": { + "use_grad_norm_tol": 1e-06 + } } }, "boundary_conditions": { @@ -30,7 +47,7 @@ { "id": 1, "type": "NeoHookean", - "E": 7.3e5, + "E": 730000.0, "nu": 0.47, "rho": 1000 } @@ -40,4 +57,4 @@ "level": "error" } } -} +} \ No newline at end of file diff --git a/input/dirichlet-ref-opt.json b/input/dirichlet-ref-opt.json index 680d60f..fbecdb9 100644 --- a/input/dirichlet-ref-opt.json +++ b/input/dirichlet-ref-opt.json @@ -1,10 +1,6 @@ { - "variable_to_simulation": [ - - ], - "parameters": [ - - ], + "variable_to_simulation": [], + "parameters": [], "functionals": [ { "type": "target", @@ -20,5 +16,24 @@ { "path": "dirichlet-ref.json" } - ] + ], + "solver": { + "advanced": { + "characteristic_force_density": 1, + "characteristic_length": 1 + }, + "nonlinear": { + "norm_type": "Euclidean", + "first_grad_norm_tol": 1e-10, + "grad_norm_tol": 1e-08, + "x_delta_tol": 0, + "advanced": { + "f_delta_tol": 0, + "derivative_along_delta_x_tol": 0 + }, + "line_search": { + "use_grad_norm_tol": 1e-06 + } + } + } } \ No newline at end of file diff --git a/input/dirichlet-ref.json b/input/dirichlet-ref.json index 6d990d5..0c092e7 100644 --- a/input/dirichlet-ref.json +++ b/input/dirichlet-ref.json @@ -79,10 +79,30 @@ }, "solver": { "linear": { - "solver": ["Eigen::PardisoLDLT","Eigen::SimplicialLDLT"] + "solver": [ + "Eigen::PardisoLDLT", + "Eigen::SimplicialLDLT" + ] }, "contact": { "barrier_stiffness": 100000 + }, + "advanced": { + "characteristic_force_density": 1, + "characteristic_length": 1 + }, + "nonlinear": { + "norm_type": "Euclidean", + "first_grad_norm_tol": 2e-12, + "grad_norm_tol": 2e-10, + "x_delta_tol": 0.0, + "advanced": { + "f_delta_tol": 0.0, + "derivative_along_delta_x_tol": 0.0 + }, + "line_search": { + "use_grad_norm_tol": 2e-08 + } } }, "boundary_conditions": { diff --git a/input/dirichlet-sdf-opt.json b/input/dirichlet-sdf-opt.json index 33cb3b9..9a65fbe 100644 --- a/input/dirichlet-sdf-opt.json +++ b/input/dirichlet-sdf-opt.json @@ -104,5 +104,24 @@ { "path": "dirichlet-sdf.json" } - ] + ], + "solver": { + "advanced": { + "characteristic_force_density": 1, + "characteristic_length": 1 + }, + "nonlinear": { + "norm_type": "Euclidean", + "first_grad_norm_tol": 1e-10, + "grad_norm_tol": 1e-08, + "x_delta_tol": 0, + "advanced": { + "f_delta_tol": 0, + "derivative_along_delta_x_tol": 0 + }, + "line_search": { + "use_grad_norm_tol": 1e-06 + } + } + } } \ No newline at end of file diff --git a/input/dirichlet-sdf.json b/input/dirichlet-sdf.json index 38ef2ea..729c589 100644 --- a/input/dirichlet-sdf.json +++ b/input/dirichlet-sdf.json @@ -89,7 +89,7 @@ }, "contact": { "enabled": true, - "dhat": 1e-3, + "dhat": 0.001, "friction_coefficient": 0.5 }, "solver": { @@ -100,10 +100,24 @@ ] }, "nonlinear": { - "grad_norm": 1e-6 + "norm_type": "Euclidean", + "first_grad_norm_tol": 2e-12, + "grad_norm_tol": 2e-08, + "x_delta_tol": 0.0, + "advanced": { + "f_delta_tol": 0.0, + "derivative_along_delta_x_tol": 0.0 + }, + "line_search": { + "use_grad_norm_tol": 2e-08 + } }, "contact": { - "barrier_stiffness": 1e4 + "barrier_stiffness": 10000.0 + }, + "advanced": { + "characteristic_force_density": 1, + "characteristic_length": 1 } }, "boundary_conditions": { @@ -238,7 +252,7 @@ -0.17, -0.18, -0.19, - -0.20, + -0.2, -0.21, -0.22 ] @@ -248,7 +262,7 @@ }, "materials": { "type": "NeoHookean", - "E": 1e5, + "E": 100000.0, "nu": 0.44, "rho": 1000 }, @@ -264,4 +278,4 @@ "save_time_sequence": true } } -} +} \ No newline at end of file diff --git a/input/friction-contact-opt.json b/input/friction-contact-opt.json new file mode 100644 index 0000000..5db929e --- /dev/null +++ b/input/friction-contact-opt.json @@ -0,0 +1,52 @@ +{ + "variable_to_simulation": [ + { + "type": "friction", + "state": 0, + "composition": [] + } + ], + "parameters": [], + "functionals": [ + { + "type": "transient_integral", + "state": 0, + "static_objective": { + "type": "target", + "state": 0, + "target_state": 1, + "matching": "exact", + "surface_selection": [ + 1 + ] + } + } + ], + "states": [ + { + "path": "initial-contact.json" + }, + { + "path": "initial-contact-target.json" + } + ], + "solver": { + "advanced": { + "characteristic_force_density": 1, + "characteristic_length": 1 + }, + "nonlinear": { + "norm_type": "Euclidean", + "first_grad_norm_tol": 1e-10, + "grad_norm_tol": 1e-08, + "x_delta_tol": 0, + "advanced": { + "f_delta_tol": 0, + "derivative_along_delta_x_tol": 0 + }, + "line_search": { + "use_grad_norm_tol": 1e-06 + } + } + } +} \ No newline at end of file diff --git a/input/homogenize-stress-opt.json b/input/homogenize-stress-opt.json index c68c3a7..0812aaa 100644 --- a/input/homogenize-stress-opt.json +++ b/input/homogenize-stress-opt.json @@ -6,19 +6,35 @@ "composition": [] } ], - "parameters": [ - - ], + "parameters": [], "functionals": [ { "type": "stress", - "dimensions": [1, 1], + "dimensions": [ + 1, + 1 + ], "state": 0 } ], "solver": { "nonlinear": { - "debug_fd_eps": 1e-7 + "debug_fd_eps": 1e-07, + "norm_type": "Euclidean", + "first_grad_norm_tol": 1e-10, + "grad_norm_tol": 1e-08, + "x_delta_tol": 0, + "advanced": { + "f_delta_tol": 0, + "derivative_along_delta_x_tol": 0 + }, + "line_search": { + "use_grad_norm_tol": 1e-06 + } + }, + "advanced": { + "characteristic_force_density": 1, + "characteristic_length": 1 } }, "states": [ diff --git a/input/homogenize-stress-periodic-opt.json b/input/homogenize-stress-periodic-opt.json index 80bc854..3131b9f 100644 --- a/input/homogenize-stress-periodic-opt.json +++ b/input/homogenize-stress-periodic-opt.json @@ -6,20 +6,36 @@ "composition": [] } ], - "parameters": [ - - ], + "parameters": [], "functionals": [ { "type": "stress", - "dimensions": [1, 1], + "dimensions": [ + 1, + 1 + ], "state": 0, "weight": 1 } ], "solver": { "nonlinear": { - "debug_fd_eps": 1e-7 + "debug_fd_eps": 1e-07, + "norm_type": "Euclidean", + "first_grad_norm_tol": 1e-10, + "grad_norm_tol": 1e-08, + "x_delta_tol": 0, + "advanced": { + "f_delta_tol": 0, + "derivative_along_delta_x_tol": 0 + }, + "line_search": { + "use_grad_norm_tol": 1e-06 + } + }, + "advanced": { + "characteristic_force_density": 1, + "characteristic_length": 1 } }, "states": [ diff --git a/input/homogenize-stress-periodic.json b/input/homogenize-stress-periodic.json index e7143f3..bfb6335 100644 --- a/input/homogenize-stress-periodic.json +++ b/input/homogenize-stress-periodic.json @@ -4,7 +4,7 @@ "mesh": "../periodic105.msh", "n_refs": 0, "surface_selection": { - "threshold": 1e-6 + "threshold": 1e-06 } } ], @@ -16,28 +16,59 @@ }, "contact": { "enabled": true, - "dhat": 5e-3, + "dhat": 0.005, "periodic": true }, "solver": { "linear": { - "solver": ["Eigen::PardisoLLT","Eigen::CholmodSupernodalLLT"] + "solver": [ + "Eigen::PardisoLLT", + "Eigen::CholmodSupernodalLLT" + ] }, "adjoint_linear": { - "solver": ["Eigen::PardisoLDLT","Eigen::SimplicialLDLT"] + "solver": [ + "Eigen::PardisoLDLT", + "Eigen::SimplicialLDLT" + ] }, "nonlinear": { - "grad_norm": 1e-9 + "norm_type": "Euclidean", + "first_grad_norm_tol": 1e-10, + "grad_norm_tol": 1e-09, + "x_delta_tol": 0, + "advanced": { + "f_delta_tol": 0, + "derivative_along_delta_x_tol": 0 + }, + "line_search": { + "use_grad_norm_tol": 1e-06 + } }, "contact": { "barrier_stiffness": 1 + }, + "advanced": { + "characteristic_force_density": 1, + "characteristic_length": 1 } }, "boundary_conditions": { "periodic_boundary": { "enabled": true, - "linear_displacement_offset": [[0, 0],[0, -0.3]], - "fixed_macro_strain": [3] + "linear_displacement_offset": [ + [ + 0, + 0 + ], + [ + 0, + -0.3 + ] + ], + "fixed_macro_strain": [ + 3 + ] } }, "output": { @@ -52,7 +83,7 @@ }, "materials": { "type": "NeoHookean", - "E": 1e3, + "E": 1000.0, "nu": 0.5 } } \ No newline at end of file diff --git a/input/homogenize-stress.json b/input/homogenize-stress.json index 9955323..27951d5 100644 --- a/input/homogenize-stress.json +++ b/input/homogenize-stress.json @@ -3,7 +3,7 @@ { "mesh": "../periodic105.msh", "surface_selection": { - "threshold": 1e-6 + "threshold": 1e-06 } } ], @@ -15,28 +15,59 @@ }, "contact": { "enabled": true, - "dhat": 1e-2, + "dhat": 0.01, "periodic": false }, "solver": { "linear": { - "solver": ["Eigen::PardisoLLT","Eigen::CholmodSupernodalLLT"] + "solver": [ + "Eigen::PardisoLLT", + "Eigen::CholmodSupernodalLLT" + ] }, "adjoint_linear": { - "solver": ["Eigen::PardisoLDLT","Eigen::SimplicialLDLT"] + "solver": [ + "Eigen::PardisoLDLT", + "Eigen::SimplicialLDLT" + ] }, "nonlinear": { - "grad_norm": 1e-9 + "norm_type": "Euclidean", + "first_grad_norm_tol": 1e-10, + "grad_norm_tol": 1e-09, + "x_delta_tol": 0, + "advanced": { + "f_delta_tol": 0, + "derivative_along_delta_x_tol": 0 + }, + "line_search": { + "use_grad_norm_tol": 1e-06 + } }, "contact": { - "barrier_stiffness": 1e2 + "barrier_stiffness": 100.0 + }, + "advanced": { + "characteristic_force_density": 1, + "characteristic_length": 1 } }, "boundary_conditions": { "periodic_boundary": { "enabled": true, - "linear_displacement_offset": [[0, 0],[0, -2e-1]], - "fixed_macro_strain": [3] + "linear_displacement_offset": [ + [ + 0, + 0 + ], + [ + 0, + -0.2 + ] + ], + "fixed_macro_strain": [ + 3 + ] } }, "output": { @@ -51,7 +82,7 @@ }, "materials": { "type": "NeoHookean", - "E": 1e3, + "E": 1000.0, "nu": 0.5 } } \ No newline at end of file diff --git a/input/initial-contact-min-dist-opt.json b/input/initial-contact-min-dist-opt.json new file mode 100644 index 0000000..86abd33 --- /dev/null +++ b/input/initial-contact-min-dist-opt.json @@ -0,0 +1,71 @@ +{ + "variable_to_simulation": [ + { + "type": "initial", + "state": 0, + "composition": [] + } + ], + "parameters": [ + { + "number": 1036 + } + ], + "functionals": [ + { + "type": "transient_integral", + "state": 0, + "static_objective": { + "type": "target", + "state": 0, + "target_state": 1, + "matching": "exact", + "surface_selection": [ + 1 + ] + } + }, + { + "type": "min-dist-target", + "state": 0, + "target": [ + 0.05, + 0.2 + ], + "volume_selection": [ + 1 + ], + "steps": [ + 2, + 4 + ] + } + ], + "states": [ + { + "path": "initial-contact.json" + }, + { + "path": "initial-contact-target.json" + } + ], + "solver": { + "advanced": { + "characteristic_force_density": 1, + "characteristic_length": 1 + }, + "nonlinear": { + "norm_type": "Euclidean", + "first_grad_norm_tol": 1e-10, + "grad_norm_tol": 1e-08, + "x_delta_tol": 0, + "advanced": { + "f_delta_tol": 0, + "derivative_along_delta_x_tol": 0 + }, + "line_search": { + "use_grad_norm_tol": 1e-06 + } + } + } +} \ No newline at end of file diff --git a/input/initial-contact-opt.json b/input/initial-contact-opt.json index bb62368..36ff4a6 100644 --- a/input/initial-contact-opt.json +++ b/input/initial-contact-opt.json @@ -6,20 +6,19 @@ "composition": [] } ], - "parameters": [ - - ], + "parameters": [], "functionals": [ { "type": "transient_integral", "state": 0, - "static_objective": - { + "static_objective": { "type": "target", "state": 0, "target_state": 1, "matching": "exact", - "surface_selection": [1] + "surface_selection": [ + 1 + ] } } ], @@ -30,5 +29,24 @@ { "path": "initial-contact-target.json" } - ] + ], + "solver": { + "advanced": { + "characteristic_force_density": 1, + "characteristic_length": 1 + }, + "nonlinear": { + "norm_type": "Euclidean", + "first_grad_norm_tol": 1e-10, + "grad_norm_tol": 1e-08, + "x_delta_tol": 0, + "advanced": { + "f_delta_tol": 0, + "derivative_along_delta_x_tol": 0 + }, + "line_search": { + "use_grad_norm_tol": 1e-06 + } + } + } } \ No newline at end of file diff --git a/input/initial-contact-smooth-opt.json b/input/initial-contact-smooth-opt.json new file mode 100644 index 0000000..e66fe1a --- /dev/null +++ b/input/initial-contact-smooth-opt.json @@ -0,0 +1,69 @@ +{ + "variable_to_simulation": [ + { + "type": "initial", + "state": 0, + "composition": [] + } + ], + "parameters": [ + { + "number": 1036 + } + ], + "functionals": [ + { + "type": "transient_integral", + "state": 0, + "static_objective": { + "type": "target", + "state": 0, + "target_state": 1, + "matching": "exact", + "surface_selection": [ + 1 + ] + } + }, + { + "type": "transient_integral", + "integral_type": "final", + "state": 0, + "static_objective": { + "type": "smooth_contact_force_norm", + "state": 0, + "surface_selection": [ + 1, + 3 + ] + } + } + ], + "states": [ + { + "path": "initial-contact.json" + }, + { + "path": "initial-contact-target.json" + } + ], + "solver": { + "advanced": { + "characteristic_force_density": 1, + "characteristic_length": 1 + }, + "nonlinear": { + "norm_type": "Euclidean", + "first_grad_norm_tol": 1e-10, + "grad_norm_tol": 1e-08, + "x_delta_tol": 0, + "advanced": { + "f_delta_tol": 0, + "derivative_along_delta_x_tol": 0 + }, + "line_search": { + "use_grad_norm_tol": 1e-06 + } + } + } +} \ No newline at end of file diff --git a/input/initial-contact-target.json b/input/initial-contact-target.json index 6458a3f..c9113ee 100644 --- a/input/initial-contact-target.json +++ b/input/initial-contact-target.json @@ -44,10 +44,30 @@ }, "solver": { "linear": { - "solver": ["Eigen::PardisoLDLT","Eigen::SimplicialLDLT"] + "solver": [ + "Eigen::PardisoLDLT", + "Eigen::SimplicialLDLT" + ] }, "contact": { - "barrier_stiffness": 1e4 + "barrier_stiffness": 10000.0 + }, + "advanced": { + "characteristic_force_density": 1, + "characteristic_length": 1 + }, + "nonlinear": { + "norm_type": "Euclidean", + "first_grad_norm_tol": 4e-12, + "grad_norm_tol": 4e-10, + "x_delta_tol": 0.0, + "advanced": { + "f_delta_tol": 0.0, + "derivative_along_delta_x_tol": 0.0 + }, + "line_search": { + "use_grad_norm_tol": 4e-08 + } } }, "boundary_conditions": { @@ -78,7 +98,7 @@ }, "materials": { "type": "NeoHookean", - "E": 1e5, + "E": 100000.0, "nu": 0.3, "rho": 1000 }, diff --git a/input/initial-contact.json b/input/initial-contact.json index 85995f8..bf4ae82 100644 --- a/input/initial-contact.json +++ b/input/initial-contact.json @@ -44,10 +44,30 @@ }, "solver": { "linear": { - "solver": ["Eigen::PardisoLDLT","Eigen::SimplicialLDLT"] + "solver": [ + "Eigen::PardisoLDLT", + "Eigen::SimplicialLDLT" + ] }, "contact": { - "barrier_stiffness": 1e4 + "barrier_stiffness": 10000.0 + }, + "advanced": { + "characteristic_force_density": 1, + "characteristic_length": 1 + }, + "nonlinear": { + "norm_type": "Euclidean", + "first_grad_norm_tol": 4e-12, + "grad_norm_tol": 4e-10, + "x_delta_tol": 0.0, + "advanced": { + "f_delta_tol": 0.0, + "derivative_along_delta_x_tol": 0.0 + }, + "line_search": { + "use_grad_norm_tol": 4e-08 + } } }, "boundary_conditions": { @@ -78,7 +98,7 @@ }, "materials": { "type": "NeoHookean", - "E": 1e5, + "E": 100000.0, "nu": 0.3, "rho": 1000 }, diff --git a/input/laplacian-opt.json b/input/laplacian-opt.json index d397a89..e283b5f 100644 --- a/input/laplacian-opt.json +++ b/input/laplacian-opt.json @@ -6,13 +6,11 @@ "composition": [] } ], - "parameters": [ - - ], + "parameters": [], "functionals": [ { "type": "stress_norm", - "weight": 1e4, + "weight": 10000.0, "state": 0 }, { @@ -30,6 +28,22 @@ } ], "solver": { - + "advanced": { + "characteristic_force_density": 1, + "characteristic_length": 1 + }, + "nonlinear": { + "norm_type": "Euclidean", + "first_grad_norm_tol": 1e-10, + "grad_norm_tol": 1e-08, + "x_delta_tol": 0, + "advanced": { + "f_delta_tol": 0, + "derivative_along_delta_x_tol": 0 + }, + "line_search": { + "use_grad_norm_tol": 1e-06 + } + } } } \ No newline at end of file diff --git a/input/laplacian.json b/input/laplacian.json index db8bb53..3b54c5a 100644 --- a/input/laplacian.json +++ b/input/laplacian.json @@ -7,7 +7,27 @@ ], "solver": { "linear": { - "solver": ["Eigen::PardisoLDLT","Eigen::SimplicialLDLT"] + "solver": [ + "Eigen::PardisoLDLT", + "Eigen::SimplicialLDLT" + ] + }, + "advanced": { + "characteristic_force_density": 1, + "characteristic_length": 1 + }, + "nonlinear": { + "norm_type": "Euclidean", + "first_grad_norm_tol": 1e-10, + "grad_norm_tol": 1e-08, + "x_delta_tol": 0, + "advanced": { + "f_delta_tol": 0, + "derivative_along_delta_x_tol": 0 + }, + "line_search": { + "use_grad_norm_tol": 1e-06 + } } }, "space": { diff --git a/input/linear_elasticity-surface-3d-opt.json b/input/linear_elasticity-surface-3d-opt.json index e41af16..0676f31 100644 --- a/input/linear_elasticity-surface-3d-opt.json +++ b/input/linear_elasticity-surface-3d-opt.json @@ -6,9 +6,7 @@ "composition": [] } ], - "parameters": [ - - ], + "parameters": [], "functionals": [ { "type": "position", @@ -18,7 +16,26 @@ ], "states": [ { - "path": "linear_elasticity-surface-3d-opt.json" + "path": "linear_elasticity-surface-3d.json" + } + ], + "solver": { + "advanced": { + "characteristic_force_density": 1, + "characteristic_length": 1 + }, + "nonlinear": { + "norm_type": "Euclidean", + "first_grad_norm_tol": 1e-10, + "grad_norm_tol": 1e-08, + "x_delta_tol": 0, + "advanced": { + "f_delta_tol": 0, + "derivative_along_delta_x_tol": 0 + }, + "line_search": { + "use_grad_norm_tol": 1e-06 + } } - ] + } } \ No newline at end of file diff --git a/input/linear_elasticity-surface-3d.json b/input/linear_elasticity-surface-3d.json index 00e00da..a283762 100644 --- a/input/linear_elasticity-surface-3d.json +++ b/input/linear_elasticity-surface-3d.json @@ -11,14 +11,38 @@ } ], "transformation": { - "translation": [0.5, 0.5, 0.5] + "translation": [ + 0.5, + 0.5, + 0.5 + ] }, "n_refs": 0 } ], "solver": { "linear": { - "solver": ["Eigen::PardisoLDLT","Eigen::SimplicialLDLT"] + "solver": [ + "Eigen::PardisoLDLT", + "Eigen::SimplicialLDLT" + ] + }, + "advanced": { + "characteristic_force_density": 1, + "characteristic_length": 1 + }, + "nonlinear": { + "norm_type": "Euclidean", + "first_grad_norm_tol": 1e-10, + "grad_norm_tol": 1e-08, + "x_delta_tol": 0, + "advanced": { + "f_delta_tol": 0, + "derivative_along_delta_x_tol": 0 + }, + "line_search": { + "use_grad_norm_tol": 1e-06 + } } }, "space": { diff --git a/input/linear_elasticity-surface-opt.json b/input/linear_elasticity-surface-opt.json index 07a3cef..2824285 100644 --- a/input/linear_elasticity-surface-opt.json +++ b/input/linear_elasticity-surface-opt.json @@ -6,9 +6,7 @@ "composition": [] } ], - "parameters": [ - - ], + "parameters": [], "functionals": [ { "type": "position", @@ -21,5 +19,24 @@ { "path": "linear_elasticity-surface.json" } - ] + ], + "solver": { + "advanced": { + "characteristic_force_density": 1, + "characteristic_length": 1 + }, + "nonlinear": { + "norm_type": "Euclidean", + "first_grad_norm_tol": 1e-10, + "grad_norm_tol": 1e-08, + "x_delta_tol": 0, + "advanced": { + "f_delta_tol": 0, + "derivative_along_delta_x_tol": 0 + }, + "line_search": { + "use_grad_norm_tol": 1e-06 + } + } + } } \ No newline at end of file diff --git a/input/linear_elasticity-surface.json b/input/linear_elasticity-surface.json index 6d1dab1..f01d86e 100644 --- a/input/linear_elasticity-surface.json +++ b/input/linear_elasticity-surface.json @@ -3,10 +3,13 @@ { "mesh": "../cube_dense.msh", "transformation": { - "translation": [0.5, 0.5] + "translation": [ + 0.5, + 0.5 + ] }, "surface_selection": { - "threshold": 1e-4 + "threshold": 0.0001 } } ], @@ -19,7 +22,27 @@ }, "solver": { "linear": { - "solver": ["Eigen::PardisoLDLT","Eigen::SimplicialLDLT"] + "solver": [ + "Eigen::PardisoLDLT", + "Eigen::SimplicialLDLT" + ] + }, + "advanced": { + "characteristic_force_density": 1, + "characteristic_length": 1 + }, + "nonlinear": { + "norm_type": "Euclidean", + "first_grad_norm_tol": 1e-10, + "grad_norm_tol": 1e-08, + "x_delta_tol": 0, + "advanced": { + "f_delta_tol": 0, + "derivative_along_delta_x_tol": 0 + }, + "line_search": { + "use_grad_norm_tol": 1e-06 + } } }, "boundary_conditions": { diff --git a/input/material-transient-opt.json b/input/material-transient-opt.json index 59d0655..7bba63e 100644 --- a/input/material-transient-opt.json +++ b/input/material-transient-opt.json @@ -3,23 +3,43 @@ { "type": "elastic", "state": 0, - "composition": [] + "composition": [ + { + "type": "append-const", + "size": 115, + "value": 0.3 + }, + { + "type": "E-nu-to-lambda-mu", + "is_volume": false + } + ] } ], "parameters": [ - + { + "number": 115, + "initial": [] + } ], "functionals": [ { "type": "transient_integral", - "static_objective": { + "static_objective": { "type": "target", "state": 0, "target_state": 1, "matching": "exact", - "volume_selection": [1], - "surface_selection": [1], - "reference_cached_body_ids": [1, 3] + "volume_selection": [ + 1 + ], + "surface_selection": [ + 1 + ], + "reference_cached_body_ids": [ + 1, + 3 + ] }, "state": 0 } @@ -34,7 +54,22 @@ ], "solver": { "nonlinear": { - "debug_fd_eps": 1e-5 + "debug_fd_eps": 1e-05, + "norm_type": "Euclidean", + "first_grad_norm_tol": 1e-10, + "grad_norm_tol": 1e-08, + "x_delta_tol": 0, + "advanced": { + "f_delta_tol": 0, + "derivative_along_delta_x_tol": 0 + }, + "line_search": { + "use_grad_norm_tol": 1e-06 + } + }, + "advanced": { + "characteristic_force_density": 1, + "characteristic_length": 1 } } } \ No newline at end of file diff --git a/input/material-transient-target.json b/input/material-transient-target.json index 43cfb5d..a5275f4 100644 --- a/input/material-transient-target.json +++ b/input/material-transient-target.json @@ -46,19 +46,36 @@ }, "contact": { "enabled": true, - "dhat": 1e-2, + "dhat": 0.01, "friction_coefficient": 0.2 }, "solver": { "linear": { - "solver": ["Eigen::PardisoLDLT","Eigen::SimplicialLDLT"] + "solver": [ + "Eigen::PardisoLDLT", + "Eigen::SimplicialLDLT" + ] }, "nonlinear": { - "grad_norm": 3e-6, - "max_iterations": 100 + "max_iterations": 100, + "norm_type": "Euclidean", + "first_grad_norm_tol": 1e-12, + "grad_norm_tol": 3.0000000000000004e-08, + "x_delta_tol": 0.0, + "advanced": { + "f_delta_tol": 0.0, + "derivative_along_delta_x_tol": 0.0 + }, + "line_search": { + "use_grad_norm_tol": 1e-08 + } }, "contact": { - "barrier_stiffness": 1e5 + "barrier_stiffness": 100000.0 + }, + "advanced": { + "characteristic_force_density": 1, + "characteristic_length": 1 } }, "boundary_conditions": { @@ -89,7 +106,7 @@ }, "materials": { "type": "NeoHookean", - "E": 1e5, + "E": 100000.0, "nu": 0.3, "rho": 1000, "phi": 10, diff --git a/input/material-transient.json b/input/material-transient.json index c029475..0156320 100644 --- a/input/material-transient.json +++ b/input/material-transient.json @@ -46,19 +46,36 @@ }, "contact": { "enabled": true, - "dhat": 1e-2, + "dhat": 0.01, "friction_coefficient": 0.2 }, "solver": { "linear": { - "solver": ["Eigen::PardisoLDLT","Eigen::SimplicialLDLT"] + "solver": [ + "Eigen::PardisoLDLT", + "Eigen::SimplicialLDLT" + ] }, "nonlinear": { - "grad_norm": 3e-6, - "max_iterations": 100 + "max_iterations": 100, + "norm_type": "Euclidean", + "first_grad_norm_tol": 1e-12, + "grad_norm_tol": 3.0000000000000004e-08, + "x_delta_tol": 0.0, + "advanced": { + "f_delta_tol": 0.0, + "derivative_along_delta_x_tol": 0.0 + }, + "line_search": { + "use_grad_norm_tol": 1e-08 + } }, "contact": { - "barrier_stiffness": 1e5 + "barrier_stiffness": 100000.0 + }, + "advanced": { + "characteristic_force_density": 1, + "characteristic_length": 1 } }, "boundary_conditions": { @@ -89,7 +106,7 @@ }, "materials": { "type": "NeoHookean", - "E": 1e6, + "E": 1000000.0, "nu": 0.3, "rho": 1000, "phi": 10, diff --git a/input/neohookean-stress-3d-opt.json b/input/neohookean-stress-3d-opt.json index c1665d1..5bdc4d6 100644 --- a/input/neohookean-stress-3d-opt.json +++ b/input/neohookean-stress-3d-opt.json @@ -6,9 +6,7 @@ "composition": [] } ], - "parameters": [ - - ], + "parameters": [], "functionals": [ { "type": "stress_norm", @@ -21,6 +19,22 @@ } ], "solver": { - + "advanced": { + "characteristic_force_density": 1, + "characteristic_length": 1 + }, + "nonlinear": { + "norm_type": "Euclidean", + "first_grad_norm_tol": 1e-10, + "grad_norm_tol": 1e-08, + "x_delta_tol": 0, + "advanced": { + "f_delta_tol": 0, + "derivative_along_delta_x_tol": 0 + }, + "line_search": { + "use_grad_norm_tol": 1e-06 + } + } } } \ No newline at end of file diff --git a/input/neohookean-stress-3d.json b/input/neohookean-stress-3d.json index 7a3013b..fa251cc 100644 --- a/input/neohookean-stress-3d.json +++ b/input/neohookean-stress-3d.json @@ -13,7 +13,27 @@ }, "solver": { "linear": { - "solver": ["Eigen::PardisoLDLT", "Eigen::SimplicialLDLT"] + "solver": [ + "Eigen::PardisoLDLT", + "Eigen::SimplicialLDLT" + ] + }, + "advanced": { + "characteristic_force_density": 1, + "characteristic_length": 1 + }, + "nonlinear": { + "norm_type": "Euclidean", + "first_grad_norm_tol": 1e-10, + "grad_norm_tol": 1e-08, + "x_delta_tol": 0, + "advanced": { + "f_delta_tol": 0, + "derivative_along_delta_x_tol": 0 + }, + "line_search": { + "use_grad_norm_tol": 1e-06 + } } }, "boundary_conditions": { @@ -35,7 +55,7 @@ }, "materials": { "type": "NeoHookean", - "E": 1e5, + "E": 100000.0, "nu": 0.3 } } \ No newline at end of file diff --git a/input/node-trajectory-opt.json b/input/node-trajectory-opt.json index 8251506..28a5853 100644 --- a/input/node-trajectory-opt.json +++ b/input/node-trajectory-opt.json @@ -1,19 +1,29 @@ { - "functionals": [ - - ], + "functionals": [], "states": [ { "path": "node-trajectory.json" } ], - "variable_to_simulation": [ - - ], - "parameters": [ - - ], + "variable_to_simulation": [], + "parameters": [], "solver": { - + "advanced": { + "characteristic_force_density": 1, + "characteristic_length": 1 + }, + "nonlinear": { + "norm_type": "Euclidean", + "first_grad_norm_tol": 1e-10, + "grad_norm_tol": 1e-08, + "x_delta_tol": 0, + "advanced": { + "f_delta_tol": 0, + "derivative_along_delta_x_tol": 0 + }, + "line_search": { + "use_grad_norm_tol": 1e-06 + } + } } } \ No newline at end of file diff --git a/input/node-trajectory.json b/input/node-trajectory.json index 1579a7f..f6e4161 100644 --- a/input/node-trajectory.json +++ b/input/node-trajectory.json @@ -28,15 +28,30 @@ }, "solver": { "linear": { - "solver": ["Eigen::PardisoLDLT","Eigen::SimplicialLDLT"] + "solver": [ + "Eigen::PardisoLDLT", + "Eigen::SimplicialLDLT" + ] }, "nonlinear": { "line_search": { - "use_grad_norm_tol": 1e-3 + "use_grad_norm_tol": 0.001 + }, + "norm_type": "Euclidean", + "first_grad_norm_tol": 1e-10, + "grad_norm_tol": 1e-08, + "x_delta_tol": 0, + "advanced": { + "f_delta_tol": 0, + "derivative_along_delta_x_tol": 0 } }, "contact": { "barrier_stiffness": 20 + }, + "advanced": { + "characteristic_force_density": 1, + "characteristic_length": 1 } }, "boundary_conditions": { diff --git a/input/shape-contact-adhesion-opt.json b/input/shape-contact-adhesion-opt.json index f55a909..6277a98 100644 --- a/input/shape-contact-adhesion-opt.json +++ b/input/shape-contact-adhesion-opt.json @@ -6,9 +6,7 @@ "composition": [] } ], - "parameters": [ - - ], + "parameters": [], "functionals": [ { "type": "stress_norm", @@ -24,7 +22,23 @@ } ], "solver": { - + "advanced": { + "characteristic_force_density": 1, + "characteristic_length": 1 + }, + "nonlinear": { + "norm_type": "Euclidean", + "first_grad_norm_tol": 1e-10, + "grad_norm_tol": 1e-08, + "x_delta_tol": 0, + "advanced": { + "f_delta_tol": 0, + "derivative_along_delta_x_tol": 0 + }, + "line_search": { + "use_grad_norm_tol": 1e-06 + } + } }, "states": [ { diff --git a/input/shape-contact-adhesion.json b/input/shape-contact-adhesion.json index b4182c7..35664e6 100644 --- a/input/shape-contact-adhesion.json +++ b/input/shape-contact-adhesion.json @@ -60,20 +60,35 @@ "adhesion_enabled": true, "dhat_p": 0.0005, "dhat_a": 0.001, - "adhesion_strength": 1e-3 + "adhesion_strength": 0.001 } }, "solver": { "linear": { - "solver": ["Eigen::PardisoLDLT","Eigen::SimplicialLDLT"] + "solver": [ + "Eigen::PardisoLDLT", + "Eigen::SimplicialLDLT" + ] }, "nonlinear": { "line_search": { - "use_grad_norm_tol": 1e-3 + "use_grad_norm_tol": 0.001 + }, + "norm_type": "Euclidean", + "first_grad_norm_tol": 1e-10, + "grad_norm_tol": 1e-08, + "x_delta_tol": 0, + "advanced": { + "f_delta_tol": 0, + "derivative_along_delta_x_tol": 0 } }, "contact": { "barrier_stiffness": 20 + }, + "advanced": { + "characteristic_force_density": 1, + "characteristic_length": 1 } }, "boundary_conditions": { diff --git a/input/shape-contact-force-norm-3d-opt.json b/input/shape-contact-force-norm-3d-opt.json index 79f21df..8077143 100644 --- a/input/shape-contact-force-norm-3d-opt.json +++ b/input/shape-contact-force-norm-3d-opt.json @@ -16,7 +16,11 @@ ] } ], - "parameters": [], + "parameters": [ + { + "number": 42 + } + ], "functionals": [ { "type": "transient_integral", @@ -24,7 +28,7 @@ "state": 0, "static_objective": { "type": "log_contact_force_norm", - "dhat": 1e-1, + "dhat": 0.1, "state": 0, "surface_selection": [ 2, @@ -38,5 +42,23 @@ "path": "shape-contact-force-norm-3d.json" } ], - "solver": {} + "solver": { + "advanced": { + "characteristic_force_density": 1, + "characteristic_length": 1 + }, + "nonlinear": { + "norm_type": "Euclidean", + "first_grad_norm_tol": 1e-10, + "grad_norm_tol": 1e-08, + "x_delta_tol": 0, + "advanced": { + "f_delta_tol": 0, + "derivative_along_delta_x_tol": 0 + }, + "line_search": { + "use_grad_norm_tol": 1e-06 + } + } + } } \ No newline at end of file diff --git a/input/shape-contact-force-norm-3d.json b/input/shape-contact-force-norm-3d.json index ff8c260..e55547d 100644 --- a/input/shape-contact-force-norm-3d.json +++ b/input/shape-contact-force-norm-3d.json @@ -62,17 +62,34 @@ ] }, "contact": { - "barrier_stiffness": 1e4, + "barrier_stiffness": 10000.0, "friction_iterations": 1 }, "nonlinear": { - "grad_norm": 1e-6 + "norm_type": "Euclidean", + "first_grad_norm_tol": 1e-11, + "grad_norm_tol": 9.999999999999999e-14, + "x_delta_tol": 0.0, + "advanced": { + "f_delta_tol": 0.0, + "derivative_along_delta_x_tol": 0.0 + }, + "line_search": { + "use_grad_norm_tol": 9.999999999999998e-08 + } + }, + "advanced": { + "characteristic_force_density": 1, + "characteristic_length": 1 } }, "contact": { "enabled": true, "dhat": 0.02, - "friction_coefficient": 0.4000 + "friction_coefficient": 0.0, + "use_gcp_formulation": true, + "use_convergent_formulation": false, + "alpha_t": 0.95 }, "boundary_conditions": { "rhs": [ @@ -110,13 +127,13 @@ { "id": 1, "type": "NeoHookean", - "E": 1e5, + "E": 100000.0, "nu": 0.3 }, { "id": 2, "type": "NeoHookean", - "E": 1e5, + "E": 100000.0, "nu": 0.3 } ], diff --git a/input/shape-contact-force-norm-adhesion.json b/input/shape-contact-force-norm-adhesion.json index ece897d..36512ec 100644 --- a/input/shape-contact-force-norm-adhesion.json +++ b/input/shape-contact-force-norm-adhesion.json @@ -60,22 +60,36 @@ ] }, "contact": { - "barrier_stiffness": 1e4, + "barrier_stiffness": 10000.0, "friction_iterations": 1 }, "nonlinear": { - "grad_norm": 1e-9 + "norm_type": "Euclidean", + "first_grad_norm_tol": 3.3333333333333335e-12, + "grad_norm_tol": 3.3333333333333335e-11, + "x_delta_tol": 0.0, + "advanced": { + "f_delta_tol": 0.0, + "derivative_along_delta_x_tol": 0.0 + }, + "line_search": { + "use_grad_norm_tol": 3.3333333333333334e-08 + } + }, + "advanced": { + "characteristic_force_density": 1, + "characteristic_length": 1 } }, "contact": { "enabled": true, "dhat": 0.01, - "friction_coefficient": 0.4000, + "friction_coefficient": 0.4, "adhesion": { "adhesion_enabled": true, "dhat_p": 0.01, "dhat_a": 0.02, - "adhesion_strength": 1e-4, + "adhesion_strength": 0.0001, "tangential_adhesion_coefficient": 0.1 } }, @@ -114,13 +128,13 @@ { "id": 1, "type": "NeoHookean", - "E": 1e5, + "E": 100000.0, "nu": 0.3 }, { "id": 2, "type": "NeoHookean", - "E": 1e5, + "E": 100000.0, "nu": 0.3 } ], diff --git a/input/shape-contact-force-norm-opt-adhesion.json b/input/shape-contact-force-norm-opt-adhesion.json index 62ad9d6..d2176fe 100644 --- a/input/shape-contact-force-norm-opt-adhesion.json +++ b/input/shape-contact-force-norm-opt-adhesion.json @@ -3,10 +3,30 @@ { "type": "shape", "state": 0, - "composition": [] + "composite_map_type": "boundary", + "surface_selection": [ + 3, + 4 + ], + "composition": [ + { + "type": "slice", + "parameter_index": 0 + } + ] + } + ], + "parameters": [ + { + "number": { + "surface_selection": [ + 3, + 4 + ], + "state": 0 + } } ], - "parameters": [], "functionals": [ { "type": "transient_integral", @@ -22,7 +42,7 @@ 3, 4 ], - "dhat": 1e-1 + "dhat": 0.1 } } ], @@ -31,5 +51,23 @@ "path": "shape-contact-force-norm-adhesion.json" } ], - "solver": {} + "solver": { + "advanced": { + "characteristic_force_density": 1, + "characteristic_length": 1 + }, + "nonlinear": { + "norm_type": "Euclidean", + "first_grad_norm_tol": 1e-10, + "grad_norm_tol": 1e-08, + "x_delta_tol": 0, + "advanced": { + "f_delta_tol": 0, + "derivative_along_delta_x_tol": 0 + }, + "line_search": { + "use_grad_norm_tol": 1e-06 + } + } + } } \ No newline at end of file diff --git a/input/shape-contact-force-norm-opt.json b/input/shape-contact-force-norm-opt.json index 144818c..d4b7e57 100644 --- a/input/shape-contact-force-norm-opt.json +++ b/input/shape-contact-force-norm-opt.json @@ -3,10 +3,30 @@ { "type": "shape", "state": 0, - "composition": [] + "composite_map_type": "boundary", + "surface_selection": [ + 3, + 4 + ], + "composition": [ + { + "type": "slice", + "parameter_index": 0 + } + ] + } + ], + "parameters": [ + { + "number": { + "surface_selection": [ + 3, + 4 + ], + "state": 0 + } } ], - "parameters": [], "functionals": [ { "type": "transient_integral", @@ -22,7 +42,7 @@ 3, 4 ], - "dhat": 1e-1 + "dhat": 0.1 } } ], @@ -31,5 +51,23 @@ "path": "shape-contact-force-norm.json" } ], - "solver": {} + "solver": { + "advanced": { + "characteristic_force_density": 1, + "characteristic_length": 1 + }, + "nonlinear": { + "norm_type": "Euclidean", + "first_grad_norm_tol": 1e-10, + "grad_norm_tol": 1e-08, + "x_delta_tol": 0, + "advanced": { + "f_delta_tol": 0, + "derivative_along_delta_x_tol": 0 + }, + "line_search": { + "use_grad_norm_tol": 1e-06 + } + } + } } \ No newline at end of file diff --git a/input/shape-contact-force-norm.json b/input/shape-contact-force-norm.json index 859ed9c..2ddc82a 100644 --- a/input/shape-contact-force-norm.json +++ b/input/shape-contact-force-norm.json @@ -60,17 +60,31 @@ ] }, "contact": { - "barrier_stiffness": 1e4, + "barrier_stiffness": 10000.0, "friction_iterations": 1 }, "nonlinear": { - "grad_norm": 1e-9 + "norm_type": "Euclidean", + "first_grad_norm_tol": 3.3333333333333335e-12, + "grad_norm_tol": 3.3333333333333335e-11, + "x_delta_tol": 0.0, + "advanced": { + "f_delta_tol": 0.0, + "derivative_along_delta_x_tol": 0.0 + }, + "line_search": { + "use_grad_norm_tol": 3.3333333333333334e-08 + } + }, + "advanced": { + "characteristic_force_density": 1, + "characteristic_length": 1 } }, "contact": { "enabled": true, "dhat": 0.01, - "friction_coefficient": 0.4000 + "friction_coefficient": 0.4 }, "boundary_conditions": { "rhs": [ @@ -107,13 +121,13 @@ { "id": 1, "type": "NeoHookean", - "E": 1e5, + "E": 100000.0, "nu": 0.3 }, { "id": 2, "type": "NeoHookean", - "E": 1e5, + "E": 100000.0, "nu": 0.3 } ], diff --git a/input/shape-contact-opt.json b/input/shape-contact-opt.json index 0d72c33..3b96a98 100644 --- a/input/shape-contact-opt.json +++ b/input/shape-contact-opt.json @@ -6,9 +6,7 @@ "composition": [] } ], - "parameters": [ - - ], + "parameters": [], "functionals": [ { "type": "stress_norm", @@ -24,7 +22,23 @@ } ], "solver": { - + "advanced": { + "characteristic_force_density": 1, + "characteristic_length": 1 + }, + "nonlinear": { + "norm_type": "Euclidean", + "first_grad_norm_tol": 1e-10, + "grad_norm_tol": 1e-08, + "x_delta_tol": 0, + "advanced": { + "f_delta_tol": 0, + "derivative_along_delta_x_tol": 0 + }, + "line_search": { + "use_grad_norm_tol": 1e-06 + } + } }, "states": [ { diff --git a/input/shape-contact.json b/input/shape-contact.json index 1f12bde..5c14d08 100644 --- a/input/shape-contact.json +++ b/input/shape-contact.json @@ -59,15 +59,30 @@ }, "solver": { "linear": { - "solver": ["Eigen::PardisoLDLT","Eigen::SimplicialLDLT"] + "solver": [ + "Eigen::PardisoLDLT", + "Eigen::SimplicialLDLT" + ] }, "nonlinear": { "line_search": { - "use_grad_norm_tol": 1e-3 + "use_grad_norm_tol": 0.001 + }, + "norm_type": "Euclidean", + "first_grad_norm_tol": 1e-10, + "grad_norm_tol": 1e-08, + "x_delta_tol": 0, + "advanced": { + "f_delta_tol": 0, + "derivative_along_delta_x_tol": 0 } }, "contact": { "barrier_stiffness": 20 + }, + "advanced": { + "characteristic_force_density": 1, + "characteristic_length": 1 } }, "boundary_conditions": { diff --git a/input/shape-neumann-nodes-opt.json b/input/shape-neumann-nodes-opt.json index a05a9d6..17c9ec7 100644 --- a/input/shape-neumann-nodes-opt.json +++ b/input/shape-neumann-nodes-opt.json @@ -3,10 +3,28 @@ { "type": "shape", "state": 0, - "composition": [] + "composite_map_type": "boundary", + "surface_selection": [ + 2 + ], + "composition": [ + { + "type": "slice", + "parameter_index": 0 + } + ] + } + ], + "parameters": [ + { + "number": { + "surface_selection": [ + 2 + ], + "state": 0 + } } ], - "parameters": [], "functionals": [ { "type": "transient_integral", @@ -26,5 +44,23 @@ "path": "shape-neumann-nodes.json" } ], - "solver": {} + "solver": { + "advanced": { + "characteristic_force_density": 1, + "characteristic_length": 1 + }, + "nonlinear": { + "norm_type": "Euclidean", + "first_grad_norm_tol": 1e-10, + "grad_norm_tol": 1e-08, + "x_delta_tol": 0, + "advanced": { + "f_delta_tol": 0, + "derivative_along_delta_x_tol": 0 + }, + "line_search": { + "use_grad_norm_tol": 1e-06 + } + } + } } \ No newline at end of file diff --git a/input/shape-neumann-nodes.json b/input/shape-neumann-nodes.json index c2c1a1d..3d09f59 100644 --- a/input/shape-neumann-nodes.json +++ b/input/shape-neumann-nodes.json @@ -48,15 +48,30 @@ }, "solver": { "linear": { - "solver": ["Eigen::PardisoLDLT","Eigen::SimplicialLDLT"] + "solver": [ + "Eigen::PardisoLDLT", + "Eigen::SimplicialLDLT" + ] }, "nonlinear": { "line_search": { - "use_grad_norm_tol": 1e-3 + "use_grad_norm_tol": 2.5e-05 + }, + "norm_type": "Euclidean", + "first_grad_norm_tol": 2.5000000000000003e-12, + "grad_norm_tol": 2.5e-10, + "x_delta_tol": 0.0, + "advanced": { + "f_delta_tol": 0.0, + "derivative_along_delta_x_tol": 0.0 } }, "contact": { - "barrier_stiffness": 1e4 + "barrier_stiffness": 10000.0 + }, + "advanced": { + "characteristic_force_density": 1, + "characteristic_length": 1 } }, "contact": { @@ -101,13 +116,13 @@ { "id": 1, "type": "NeoHookean", - "E": 1e5, + "E": 100000.0, "nu": 0.3 }, { "id": 2, "type": "NeoHookean", - "E": 1e5, + "E": 100000.0, "nu": 0.3 } ] diff --git a/input/shape-pressure-neumann-nodes-opt.json b/input/shape-pressure-neumann-nodes-opt.json index a05a9d6..b5e3f04 100644 --- a/input/shape-pressure-neumann-nodes-opt.json +++ b/input/shape-pressure-neumann-nodes-opt.json @@ -26,5 +26,23 @@ "path": "shape-neumann-nodes.json" } ], - "solver": {} + "solver": { + "advanced": { + "characteristic_force_density": 1, + "characteristic_length": 1 + }, + "nonlinear": { + "norm_type": "Euclidean", + "first_grad_norm_tol": 1e-10, + "grad_norm_tol": 1e-08, + "x_delta_tol": 0, + "advanced": { + "f_delta_tol": 0, + "derivative_along_delta_x_tol": 0 + }, + "line_search": { + "use_grad_norm_tol": 1e-06 + } + } + } } \ No newline at end of file diff --git a/input/shape-pressure-neumann-nodes.json b/input/shape-pressure-neumann-nodes.json index 3d30c8c..6c632c0 100644 --- a/input/shape-pressure-neumann-nodes.json +++ b/input/shape-pressure-neumann-nodes.json @@ -48,15 +48,30 @@ }, "solver": { "linear": { - "solver": ["Eigen::PardisoLDLT","Eigen::SimplicialLDLT"] + "solver": [ + "Eigen::PardisoLDLT", + "Eigen::SimplicialLDLT" + ] }, "contact": { - "barrier_stiffness": 1e4 + "barrier_stiffness": 10000.0 }, "nonlinear": { "line_search": { - "use_grad_norm_tol": 1e-3 + "use_grad_norm_tol": 2.5e-05 + }, + "norm_type": "Euclidean", + "first_grad_norm_tol": 2.5000000000000003e-12, + "grad_norm_tol": 2.5e-10, + "x_delta_tol": 0.0, + "advanced": { + "f_delta_tol": 0.0, + "derivative_along_delta_x_tol": 0.0 } + }, + "advanced": { + "characteristic_force_density": 1, + "characteristic_length": 1 } }, "contact": { @@ -97,13 +112,13 @@ { "id": 1, "type": "NeoHookean", - "E": 1e5, + "E": 100000.0, "nu": 0.3 }, { "id": 2, "type": "NeoHookean", - "E": 1e5, + "E": 100000.0, "nu": 0.3 } ], @@ -119,4 +134,4 @@ "save_time_sequence": false } } -} +} \ No newline at end of file diff --git a/input/shape-pressure-nodes-2d-opt.json b/input/shape-pressure-nodes-2d-opt.json index 6aefa0a..fb10511 100644 --- a/input/shape-pressure-nodes-2d-opt.json +++ b/input/shape-pressure-nodes-2d-opt.json @@ -3,11 +3,9 @@ { "type": "shape", "state": 0, - "composite_map_type": "boundary_excluding_surface", + "composite_map_type": "boundary", "surface_selection": [ - 1, - 3, - 5 + 2 ], "composition": [ { @@ -19,7 +17,12 @@ ], "parameters": [ { - "number": 2 + "number": { + "surface_selection": [ + 2 + ], + "state": 0 + } } ], "functionals": [ @@ -28,13 +31,10 @@ "integral_type": "final", "state": 0, "static_objective": { - "type": "log_contact_force_norm", - "dhat": 1e-1, "state": 0, - "weight": 1, - "surface_selection": [ - 1, - 5 + "type": "stress_norm", + "volume_selection": [ + 1 ] } } @@ -44,5 +44,23 @@ "path": "shape-pressure-nodes-2d.json" } ], - "solver": {} + "solver": { + "advanced": { + "characteristic_force_density": 1, + "characteristic_length": 1 + }, + "nonlinear": { + "norm_type": "Euclidean", + "first_grad_norm_tol": 1e-10, + "grad_norm_tol": 1e-08, + "x_delta_tol": 0, + "advanced": { + "f_delta_tol": 0, + "derivative_along_delta_x_tol": 0 + }, + "line_search": { + "use_grad_norm_tol": 1e-06 + } + } + } } \ No newline at end of file diff --git a/input/shape-pressure-nodes-2d.json b/input/shape-pressure-nodes-2d.json index 48924b9..7fe4d61 100644 --- a/input/shape-pressure-nodes-2d.json +++ b/input/shape-pressure-nodes-2d.json @@ -72,13 +72,24 @@ ] }, "contact": { - "barrier_stiffness": 1e4 + "barrier_stiffness": 10000.0 }, "nonlinear": { - "grad_norm": 1e-8, "line_search": { - "use_grad_norm_tol": 1e-7 + "use_grad_norm_tol": 5e-09 + }, + "norm_type": "Euclidean", + "first_grad_norm_tol": 5.0000000000000005e-12, + "grad_norm_tol": 5e-10, + "x_delta_tol": 0.0, + "advanced": { + "f_delta_tol": 0.0, + "derivative_along_delta_x_tol": 0.0 } + }, + "advanced": { + "characteristic_force_density": 1, + "characteristic_length": 1 } }, "contact": { @@ -129,13 +140,13 @@ { "id": 1, "type": "NeoHookean", - "E": 1e5, + "E": 100000.0, "nu": 0.3 }, { "id": 2, "type": "NeoHookean", - "E": 1e5, + "E": 100000.0, "nu": 0.3 } ], @@ -152,4 +163,4 @@ "save_time_sequence": true } } -} +} \ No newline at end of file diff --git a/input/shape-pressure-nodes-3d-opt.json b/input/shape-pressure-nodes-3d-opt.json index 582a3a1..dbde1c4 100644 --- a/input/shape-pressure-nodes-3d-opt.json +++ b/input/shape-pressure-nodes-3d-opt.json @@ -135,5 +135,23 @@ "path": "shape-pressure-nodes-3d.json" } ], - "solver": {} + "solver": { + "advanced": { + "characteristic_force_density": 1, + "characteristic_length": 1 + }, + "nonlinear": { + "norm_type": "Euclidean", + "first_grad_norm_tol": 1e-10, + "grad_norm_tol": 1e-08, + "x_delta_tol": 0, + "advanced": { + "f_delta_tol": 0, + "derivative_along_delta_x_tol": 0 + }, + "line_search": { + "use_grad_norm_tol": 1e-06 + } + } + } } \ No newline at end of file diff --git a/input/shape-pressure-nodes-3d.json b/input/shape-pressure-nodes-3d.json index 3ccab48..5f7930b 100644 --- a/input/shape-pressure-nodes-3d.json +++ b/input/shape-pressure-nodes-3d.json @@ -92,12 +92,24 @@ ] }, "contact": { - "barrier_stiffness": 1e4 + "barrier_stiffness": 10000.0 }, "nonlinear": { "line_search": { - "use_grad_norm_tol": 1e-7 + "use_grad_norm_tol": 2.5e-09 + }, + "norm_type": "Euclidean", + "first_grad_norm_tol": 2.5000000000000003e-12, + "grad_norm_tol": 2.5e-10, + "x_delta_tol": 0.0, + "advanced": { + "f_delta_tol": 0.0, + "derivative_along_delta_x_tol": 0.0 } + }, + "advanced": { + "characteristic_force_density": 1, + "characteristic_length": 1 } }, "contact": { @@ -148,13 +160,13 @@ { "id": 1, "type": "NeoHookean", - "E": 1e5, + "E": 100000.0, "nu": 0.3 }, { "id": 2, "type": "NeoHookean", - "E": 1e5, + "E": 100000.0, "nu": 0.3 } ], @@ -170,4 +182,4 @@ "save_time_sequence": true } } -} +} \ No newline at end of file diff --git a/input/shape-transient-friction-opt.json b/input/shape-transient-friction-opt.json index 2b0be6c..627c721 100644 --- a/input/shape-transient-friction-opt.json +++ b/input/shape-transient-friction-opt.json @@ -7,7 +7,9 @@ } ], "parameters": [ - + { + "number": 146 + } ], "functionals": [ { @@ -24,5 +26,24 @@ { "path": "shape-transient-friction.json" } - ] + ], + "solver": { + "advanced": { + "characteristic_force_density": 1, + "characteristic_length": 1 + }, + "nonlinear": { + "norm_type": "Euclidean", + "first_grad_norm_tol": 1e-10, + "grad_norm_tol": 1e-08, + "x_delta_tol": 0, + "advanced": { + "f_delta_tol": 0, + "derivative_along_delta_x_tol": 0 + }, + "line_search": { + "use_grad_norm_tol": 1e-06 + } + } + } } \ No newline at end of file diff --git a/input/shape-transient-friction-sdf-opt.json b/input/shape-transient-friction-sdf-opt.json index ef60612..747f9e6 100644 --- a/input/shape-transient-friction-sdf-opt.json +++ b/input/shape-transient-friction-sdf-opt.json @@ -54,5 +54,24 @@ { "path": "shape-transient-friction-sdf.json" } - ] + ], + "solver": { + "advanced": { + "characteristic_force_density": 1, + "characteristic_length": 1 + }, + "nonlinear": { + "norm_type": "Euclidean", + "first_grad_norm_tol": 1e-10, + "grad_norm_tol": 1e-08, + "x_delta_tol": 0, + "advanced": { + "f_delta_tol": 0, + "derivative_along_delta_x_tol": 0 + }, + "line_search": { + "use_grad_norm_tol": 1e-06 + } + } + } } \ No newline at end of file diff --git a/input/shape-transient-friction-sdf.json b/input/shape-transient-friction-sdf.json index cdd97d1..64261a8 100644 --- a/input/shape-transient-friction-sdf.json +++ b/input/shape-transient-friction-sdf.json @@ -72,10 +72,30 @@ }, "solver": { "linear": { - "solver": ["Eigen::PardisoLDLT","Eigen::SimplicialLDLT"] + "solver": [ + "Eigen::PardisoLDLT", + "Eigen::SimplicialLDLT" + ] }, "contact": { "barrier_stiffness": 100000.0 + }, + "advanced": { + "characteristic_force_density": 1, + "characteristic_length": 1 + }, + "nonlinear": { + "norm_type": "Euclidean", + "first_grad_norm_tol": 2.5000000000000003e-12, + "grad_norm_tol": 2.5e-10, + "x_delta_tol": 0.0, + "advanced": { + "f_delta_tol": 0.0, + "derivative_along_delta_x_tol": 0.0 + }, + "line_search": { + "use_grad_norm_tol": 2.5e-08 + } } }, "boundary_conditions": { diff --git a/input/shape-transient-friction.json b/input/shape-transient-friction.json index bd1ac5e..7773608 100644 --- a/input/shape-transient-friction.json +++ b/input/shape-transient-friction.json @@ -45,15 +45,30 @@ }, "solver": { "linear": { - "solver": ["Eigen::PardisoLDLT","Eigen::SimplicialLDLT"] + "solver": [ + "Eigen::PardisoLDLT", + "Eigen::SimplicialLDLT" + ] }, "nonlinear": { "line_search": { - "use_grad_norm_tol": 1e-3 + "use_grad_norm_tol": 2.5e-05 + }, + "norm_type": "Euclidean", + "first_grad_norm_tol": 2.5000000000000003e-12, + "grad_norm_tol": 2.5e-10, + "x_delta_tol": 0.0, + "advanced": { + "f_delta_tol": 0.0, + "derivative_along_delta_x_tol": 0.0 } }, "contact": { "barrier_stiffness": 100000.0 + }, + "advanced": { + "characteristic_force_density": 1, + "characteristic_length": 1 } }, "boundary_conditions": { diff --git a/input/static-control-pressure-nodes-3d-opt.json b/input/static-control-pressure-nodes-3d-opt.json index 5dd770b..a6ad54d 100644 --- a/input/static-control-pressure-nodes-3d-opt.json +++ b/input/static-control-pressure-nodes-3d-opt.json @@ -125,5 +125,23 @@ "path": "static-control-pressure-nodes-3d.json" } ], - "solver": {} -} + "solver": { + "advanced": { + "characteristic_force_density": 1, + "characteristic_length": 1 + }, + "nonlinear": { + "norm_type": "Euclidean", + "first_grad_norm_tol": 1e-10, + "grad_norm_tol": 1e-08, + "x_delta_tol": 0, + "advanced": { + "f_delta_tol": 0, + "derivative_along_delta_x_tol": 0 + }, + "line_search": { + "use_grad_norm_tol": 1e-06 + } + } + } +} \ No newline at end of file diff --git a/input/static-control-pressure-nodes-3d.json b/input/static-control-pressure-nodes-3d.json index 324fbe8..7a2f358 100644 --- a/input/static-control-pressure-nodes-3d.json +++ b/input/static-control-pressure-nodes-3d.json @@ -80,8 +80,20 @@ }, "nonlinear": { "line_search": { - "use_grad_norm_tol": 1e-7 + "use_grad_norm_tol": 1e-07 + }, + "norm_type": "Euclidean", + "first_grad_norm_tol": 1e-10, + "grad_norm_tol": 1e-08, + "x_delta_tol": 0, + "advanced": { + "f_delta_tol": 0, + "derivative_along_delta_x_tol": 0 } + }, + "advanced": { + "characteristic_force_density": 1, + "characteristic_length": 1 } }, "boundary_conditions": { @@ -111,7 +123,7 @@ { "id": 1, "type": "NeoHookean", - "E": 1e5, + "E": 100000.0, "nu": 0.3 } ], diff --git a/input/topology-compliance-opt.json b/input/topology-compliance-opt.json index f17baab..0214d6f 100644 --- a/input/topology-compliance-opt.json +++ b/input/topology-compliance-opt.json @@ -1,19 +1,58 @@ { "variable_to_simulation": [ - + { + "type": "elastic", + "state": 0, + "composition": [ + { + "type": "power", + "power": 5 + }, + { + "type": "append-const", + "size": 198, + "value": 0.3 + }, + { + "type": "E-nu-to-lambda-mu", + "is_volume": false + } + ] + } ], "parameters": [ - + { + "number": 198, + "initial": [] + } ], "functionals": [ { "type": "compliance", "state": 0, - "volume_selection": [1] + "volume_selection": [ + 1 + ] } ], "solver": { - + "advanced": { + "characteristic_force_density": 1, + "characteristic_length": 1 + }, + "nonlinear": { + "norm_type": "Euclidean", + "first_grad_norm_tol": 1e-10, + "grad_norm_tol": 1e-08, + "x_delta_tol": 0, + "advanced": { + "f_delta_tol": 0, + "derivative_along_delta_x_tol": 0 + }, + "line_search": { + "use_grad_norm_tol": 1e-06 + } + } }, "states": [ { diff --git a/input/topology-compliance.json b/input/topology-compliance.json index 1f71eda..f441d0d 100644 --- a/input/topology-compliance.json +++ b/input/topology-compliance.json @@ -3,7 +3,7 @@ { "mesh": "../bar198.obj", "surface_selection": { - "threshold": 1e-4 + "threshold": 0.0001 }, "volume_selection": 1 } @@ -17,7 +17,27 @@ }, "solver": { "linear": { - "solver": ["Eigen::PardisoLDLT","Eigen::SimplicialLDLT"] + "solver": [ + "Eigen::PardisoLDLT", + "Eigen::SimplicialLDLT" + ] + }, + "advanced": { + "characteristic_force_density": 1, + "characteristic_length": 1 + }, + "nonlinear": { + "norm_type": "Euclidean", + "first_grad_norm_tol": 1e-10, + "grad_norm_tol": 1e-08, + "x_delta_tol": 0, + "advanced": { + "f_delta_tol": 0, + "derivative_along_delta_x_tol": 0 + }, + "line_search": { + "use_grad_norm_tol": 1e-06 + } } }, "boundary_conditions": { diff --git a/input/walker-opt.json b/input/walker-opt.json index ac1d3ab..c7f5ade 100644 --- a/input/walker-opt.json +++ b/input/walker-opt.json @@ -50,7 +50,6 @@ "nonlinear": { "solver": "L-BFGS", "max_iterations": 100, - "grad_norm": 1e-6, "box_constraints": { "bounds": [ -1500, @@ -58,18 +57,29 @@ ] }, "advanced": { - "apply_gradient_fd": "None" + "apply_gradient_fd": "None", + "f_delta_tol": 0, + "derivative_along_delta_x_tol": 0 + }, + "norm_type": "Euclidean", + "first_grad_norm_tol": 1e-10, + "grad_norm_tol": 1e-06, + "x_delta_tol": 0, + "line_search": { + "use_grad_norm_tol": 1e-06 } }, "advanced": { "enable_slim": false, - "smooth_line_search": false + "smooth_line_search": false, + "characteristic_force_density": 1, + "characteristic_length": 1 } }, "functionals": [ { "type": "transient_integral", - "weight": 1e2, + "weight": 100.0, "print_energy": "target_match", "integral_type": "final", "state": 0, diff --git a/input/walker-shape-opt.json b/input/walker-shape-opt.json index f7bf8c1..b805cf2 100644 --- a/input/walker-shape-opt.json +++ b/input/walker-shape-opt.json @@ -60,7 +60,6 @@ "nonlinear": { "solver": "L-BFGS", "max_iterations": 100, - "grad_norm": 1e-6, "box_constraints": { "bounds": [ -1500, @@ -68,18 +67,29 @@ ] }, "advanced": { - "apply_gradient_fd": "DirectionalDerivative" + "apply_gradient_fd": "DirectionalDerivative", + "f_delta_tol": 0, + "derivative_along_delta_x_tol": 0 + }, + "norm_type": "Euclidean", + "first_grad_norm_tol": 1e-10, + "grad_norm_tol": 1e-06, + "x_delta_tol": 0, + "line_search": { + "use_grad_norm_tol": 1e-06 } }, "advanced": { "enable_slim": false, - "smooth_line_search": false + "smooth_line_search": false, + "characteristic_force_density": 1, + "characteristic_length": 1 } }, "functionals": [ { "type": "transient_integral", - "weight": 1e2, + "weight": 100.0, "print_energy": "target_match", "integral_type": "final", "state": 0, @@ -102,7 +112,7 @@ ], "states": [ { - "path": "state_walker.json" + "path": "walker-shape.json" } ] } \ No newline at end of file diff --git a/input/walker-shape.json b/input/walker-shape.json index 6535060..3dc1ce9 100644 --- a/input/walker-shape.json +++ b/input/walker-shape.json @@ -64,7 +64,7 @@ "contact": { "enabled": true, "friction_coefficient": 0.8, - "dhat": 1e-4, + "dhat": 0.0001, "use_convergent_formulation": true }, "space": { @@ -81,15 +81,18 @@ }, "solver": { "linear": { - "solver": ["Eigen::PardisoLDLT", "Eigen::CholmodSupernodalLLT", "Eigen::SimplicialLDLT"] + "solver": [ + "Eigen::PardisoLDLT", + "Eigen::CholmodSupernodalLLT", + "Eigen::SimplicialLDLT" + ] }, "contact": { - "barrier_stiffness": 1e5, + "barrier_stiffness": 100000.0, "friction_iterations": 1 }, "nonlinear": { "max_iterations": 1500, - "grad_norm": 1e-8, "solver": [ { "type": "Newton" @@ -107,7 +110,22 @@ "Newton": { "use_psd_projection": false, "use_psd_projection_in_regularized": false + }, + "norm_type": "Euclidean", + "first_grad_norm_tol": 1.0000000000000001e-11, + "grad_norm_tol": 1e-09, + "x_delta_tol": 0.0, + "advanced": { + "f_delta_tol": 0.0, + "derivative_along_delta_x_tol": 0.0 + }, + "line_search": { + "use_grad_norm_tol": 1e-07 } + }, + "advanced": { + "characteristic_force_density": 1, + "characteristic_length": 1 } }, "boundary_conditions": { @@ -229,7 +247,7 @@ { "id": 1, "type": "NeoHookean", - "E": 1e5, + "E": 100000.0, "nu": 0.35, "rho": 1000 } @@ -251,4 +269,4 @@ "save_time_sequence": false } } -} +} \ No newline at end of file diff --git a/input/walker.json b/input/walker.json index c3e8105..2fae952 100644 --- a/input/walker.json +++ b/input/walker.json @@ -64,7 +64,7 @@ "contact": { "enabled": true, "friction_coefficient": 0.8, - "dhat": 1e-4, + "dhat": 0.0001, "use_convergent_formulation": true }, "space": { @@ -81,15 +81,18 @@ }, "solver": { "linear": { - "solver": ["Eigen::PardisoLDLT", "Eigen::CholmodSupernodalLLT", "Eigen::SimplicialLDLT"] + "solver": [ + "Eigen::PardisoLDLT", + "Eigen::CholmodSupernodalLLT", + "Eigen::SimplicialLDLT" + ] }, "contact": { - "barrier_stiffness": 1e5, + "barrier_stiffness": 100000.0, "friction_iterations": 1 }, "nonlinear": { "max_iterations": 1500, - "grad_norm": 1e-9, "solver": [ { "type": "Newton" @@ -107,7 +110,22 @@ "Newton": { "use_psd_projection": false, "use_psd_projection_in_regularized": false + }, + "norm_type": "Euclidean", + "first_grad_norm_tol": 1.0000000000000001e-11, + "grad_norm_tol": 1.0000000000000002e-10, + "x_delta_tol": 0.0, + "advanced": { + "f_delta_tol": 0.0, + "derivative_along_delta_x_tol": 0.0 + }, + "line_search": { + "use_grad_norm_tol": 1e-07 } + }, + "advanced": { + "characteristic_force_density": 1, + "characteristic_length": 1 } }, "boundary_conditions": { @@ -229,7 +247,7 @@ { "id": 1, "type": "NeoHookean", - "E": 1e5, + "E": 100000.0, "nu": 0.35, "rho": 1000 } @@ -251,4 +269,4 @@ "save_time_sequence": false } } -} +} \ No newline at end of file diff --git a/optimizations/2d-shape-traction-force/run.json b/optimizations/2d-shape-traction-force/run.json index 90381a4..efd01e0 100644 --- a/optimizations/2d-shape-traction-force/run.json +++ b/optimizations/2d-shape-traction-force/run.json @@ -100,7 +100,7 @@ ] }, "print_energy": "traction", - "weight": -1e-4 + "weight": -0.0001 }, { "type": "transient_integral", @@ -119,7 +119,7 @@ }, { "type": "AMIPS", - "weight": 1e-8, + "weight": 1e-08, "state": 0, "volume_selection": [ 2 @@ -127,7 +127,7 @@ }, { "type": "AMIPS", - "weight": 1e-8, + "weight": 1e-08, "state": 0, "volume_selection": [ 3 @@ -137,7 +137,7 @@ "type": "collision_barrier", "weight": 1, "state": 0, - "dhat": 5e-5 + "dhat": 5e-05 } ], "solver": { @@ -146,7 +146,6 @@ "min_step_size": 1e-12, "max_step_size": 1.0, "max_iterations": 4, - "grad_norm": 1e-8, "line_search": { "method": "Backtracking", "use_grad_norm_tol": 0 @@ -154,7 +153,19 @@ "export_energy": "2d-shape-traction-force", "relative_gradient": false, "use_grad_norm": true, - "solver_info_log": true + "solver_info_log": true, + "norm_type": "Euclidean", + "first_grad_norm_tol": 1e-10, + "grad_norm_tol": 1e-08, + "x_delta_tol": 0, + "advanced": { + "f_delta_tol": 0, + "derivative_along_delta_x_tol": 0 + } + }, + "advanced": { + "characteristic_force_density": 1, + "characteristic_length": 1 } }, "states": [ diff --git a/optimizations/2d-shape-traction-force/state.json b/optimizations/2d-shape-traction-force/state.json index 2c6c521..f5dec9d 100644 --- a/optimizations/2d-shape-traction-force/state.json +++ b/optimizations/2d-shape-traction-force/state.json @@ -71,15 +71,32 @@ }, "solver": { "linear": { - "solver": ["Eigen::PardisoLDLT","Eigen::SimplicialLDLT"] + "solver": [ + "Eigen::PardisoLDLT", + "Eigen::SimplicialLDLT" + ] }, "contact": { "barrier_stiffness": 500 }, "nonlinear": { "max_iterations": 500, - "grad_norm": 1e-9, - "debug_fd": false + "debug_fd": false, + "norm_type": "Euclidean", + "first_grad_norm_tol": 2.5e-14, + "grad_norm_tol": 2.5000000000000005e-13, + "x_delta_tol": 0.0, + "advanced": { + "f_delta_tol": 0.0, + "derivative_along_delta_x_tol": 0.0 + }, + "line_search": { + "use_grad_norm_tol": 2.5e-10 + } + }, + "advanced": { + "characteristic_force_density": 1, + "characteristic_length": 1 } }, "contact": { diff --git a/optimizations/3d-bspline-shape-matching/run.json b/optimizations/3d-bspline-shape-matching/run.json index 0a94764..4050c4c 100644 --- a/optimizations/3d-bspline-shape-matching/run.json +++ b/optimizations/3d-bspline-shape-matching/run.json @@ -173,7 +173,7 @@ }, { "type": "AMIPS", - "weight": 1e-8, + "weight": 1e-08, "state": 0, "volume_selection": [ 1 @@ -183,10 +183,9 @@ "solver": { "nonlinear": { "solver": "L-BFGS", - "min_step_size": 1e-8, + "min_step_size": 1e-08, "max_step_size": 1.0, "max_iterations": 4, - "grad_norm": 1e-8, "line_search": { "method": "Backtracking", "use_grad_norm_tol": 0 @@ -194,7 +193,19 @@ "export_energy": "3d-bspline-shape-matching", "relative_gradient": false, "use_grad_norm": true, - "solver_info_log": true + "solver_info_log": true, + "norm_type": "Euclidean", + "first_grad_norm_tol": 1e-10, + "grad_norm_tol": 1e-08, + "x_delta_tol": 0, + "advanced": { + "f_delta_tol": 0, + "derivative_along_delta_x_tol": 0 + } + }, + "advanced": { + "characteristic_force_density": 1, + "characteristic_length": 1 } }, "states": [ diff --git a/optimizations/3d-bspline-shape-matching/state.json b/optimizations/3d-bspline-shape-matching/state.json index 7e1744d..55df0be 100644 --- a/optimizations/3d-bspline-shape-matching/state.json +++ b/optimizations/3d-bspline-shape-matching/state.json @@ -58,14 +58,31 @@ }, "solver": { "linear": { - "solver": ["Eigen::PardisoLDLT","Eigen::SimplicialLDLT"] + "solver": [ + "Eigen::PardisoLDLT", + "Eigen::SimplicialLDLT" + ] }, "nonlinear": { - "grad_norm": 1e-8, - "max_iterations": 500 + "max_iterations": 500, + "norm_type": "Euclidean", + "first_grad_norm_tol": 1.0000000000000001e-11, + "grad_norm_tol": 1e-09, + "x_delta_tol": 0.0, + "advanced": { + "f_delta_tol": 0.0, + "derivative_along_delta_x_tol": 0.0 + }, + "line_search": { + "use_grad_norm_tol": 1e-07 + } }, "contact": { "barrier_stiffness": 100000000.0 + }, + "advanced": { + "characteristic_force_density": 1, + "characteristic_length": 1 } }, "materials": { diff --git a/optimizations/3d-bspline-shape-mesh-matching/run.json b/optimizations/3d-bspline-shape-mesh-matching/run.json index 2dc8299..e2a10e7 100644 --- a/optimizations/3d-bspline-shape-mesh-matching/run.json +++ b/optimizations/3d-bspline-shape-mesh-matching/run.json @@ -72,7 +72,7 @@ }, { "type": "AMIPS", - "weight": 1e-8, + "weight": 1e-08, "state": 0, "volume_selection": [ 1 @@ -82,10 +82,9 @@ "solver": { "nonlinear": { "solver": "L-BFGS", - "min_step_size": 1e-8, + "min_step_size": 1e-08, "max_step_size": 1.0, "max_iterations": 4, - "grad_norm": 1e-8, "line_search": { "method": "Backtracking", "use_grad_norm_tol": 0 @@ -93,7 +92,19 @@ "export_energy": "3d-bspline-shape-mesh-matching", "relative_gradient": false, "use_grad_norm": true, - "solver_info_log": true + "solver_info_log": true, + "norm_type": "Euclidean", + "first_grad_norm_tol": 1e-10, + "grad_norm_tol": 1e-08, + "x_delta_tol": 0, + "advanced": { + "f_delta_tol": 0, + "derivative_along_delta_x_tol": 0 + } + }, + "advanced": { + "characteristic_force_density": 1, + "characteristic_length": 1 } }, "states": [ diff --git a/optimizations/3d-bspline-shape-mesh-matching/state.json b/optimizations/3d-bspline-shape-mesh-matching/state.json index 7e1744d..55df0be 100644 --- a/optimizations/3d-bspline-shape-mesh-matching/state.json +++ b/optimizations/3d-bspline-shape-mesh-matching/state.json @@ -58,14 +58,31 @@ }, "solver": { "linear": { - "solver": ["Eigen::PardisoLDLT","Eigen::SimplicialLDLT"] + "solver": [ + "Eigen::PardisoLDLT", + "Eigen::SimplicialLDLT" + ] }, "nonlinear": { - "grad_norm": 1e-8, - "max_iterations": 500 + "max_iterations": 500, + "norm_type": "Euclidean", + "first_grad_norm_tol": 1.0000000000000001e-11, + "grad_norm_tol": 1e-09, + "x_delta_tol": 0.0, + "advanced": { + "f_delta_tol": 0.0, + "derivative_along_delta_x_tol": 0.0 + }, + "line_search": { + "use_grad_norm_tol": 1e-07 + } }, "contact": { "barrier_stiffness": 100000000.0 + }, + "advanced": { + "characteristic_force_density": 1, + "characteristic_length": 1 } }, "materials": { diff --git a/optimizations/3d-bspline-shape-trajectory-opt/run.json b/optimizations/3d-bspline-shape-trajectory-opt/run.json index 49a762e..aea0e8d 100644 --- a/optimizations/3d-bspline-shape-trajectory-opt/run.json +++ b/optimizations/3d-bspline-shape-trajectory-opt/run.json @@ -123,12 +123,12 @@ "smoothing_parameters": { "min_iter": 2, "tol": 1e-10, - "soft_p": 1e5, + "soft_p": 100000.0, "exp_factor": 5 }, "contact": { "CCD": { - "tolerance": 1e-6, + "tolerance": 1e-06, "max_iterations": 1000000 }, "enabled": true @@ -154,16 +154,15 @@ "type": "collision_barrier", "shape_parameter": 0, "weight": 1, - "dhat": 1e-3 + "dhat": 0.001 } ], "solver": { "nonlinear": { "solver": "L-BFGS", - "min_step_size": 1e-8, + "min_step_size": 1e-08, "max_step_size": 1.0, "max_iterations": 4, - "grad_norm": 1e-4, "line_search": { "method": "Backtracking", "use_grad_norm_tol": 0 @@ -172,7 +171,19 @@ "relative_gradient": false, "use_grad_norm": true, "solver_info_log": true, - "debug_fd": false + "debug_fd": false, + "norm_type": "Euclidean", + "first_grad_norm_tol": 1e-10, + "grad_norm_tol": 0.0001, + "x_delta_tol": 0, + "advanced": { + "f_delta_tol": 0, + "derivative_along_delta_x_tol": 0 + } + }, + "advanced": { + "characteristic_force_density": 1, + "characteristic_length": 1 } }, "states": [ diff --git a/optimizations/3d-bspline-shape-trajectory-opt/state.json b/optimizations/3d-bspline-shape-trajectory-opt/state.json index 7aa262b..d7f4f43 100644 --- a/optimizations/3d-bspline-shape-trajectory-opt/state.json +++ b/optimizations/3d-bspline-shape-trajectory-opt/state.json @@ -103,14 +103,31 @@ }, "solver": { "linear": { - "solver": ["Eigen::PardisoLDLT","Eigen::SimplicialLDLT"] + "solver": [ + "Eigen::PardisoLDLT", + "Eigen::SimplicialLDLT" + ] }, "nonlinear": { - "grad_norm": 1e-8, - "max_iterations": 500 + "max_iterations": 500, + "norm_type": "Euclidean", + "first_grad_norm_tol": 1.0000000000000001e-11, + "grad_norm_tol": 1e-09, + "x_delta_tol": 0.0, + "advanced": { + "f_delta_tol": 0.0, + "derivative_along_delta_x_tol": 0.0 + }, + "line_search": { + "use_grad_norm_tol": 1e-07 + } }, "contact": { "barrier_stiffness": 100000000.0 + }, + "advanced": { + "characteristic_force_density": 1, + "characteristic_length": 1 } }, "materials": { diff --git a/optimizations/3d-bspline-shape-trajectory-opt/target.json b/optimizations/3d-bspline-shape-trajectory-opt/target.json index 5a86746..a6af153 100644 --- a/optimizations/3d-bspline-shape-trajectory-opt/target.json +++ b/optimizations/3d-bspline-shape-trajectory-opt/target.json @@ -103,14 +103,31 @@ }, "solver": { "linear": { - "solver": ["Eigen::PardisoLDLT","Eigen::SimplicialLDLT"] + "solver": [ + "Eigen::PardisoLDLT", + "Eigen::SimplicialLDLT" + ] }, "nonlinear": { - "grad_norm": 1e-8, - "max_iterations": 500 + "max_iterations": 500, + "norm_type": "Euclidean", + "first_grad_norm_tol": 1.0000000000000001e-11, + "grad_norm_tol": 1e-09, + "x_delta_tol": 0.0, + "advanced": { + "f_delta_tol": 0.0, + "derivative_along_delta_x_tol": 0.0 + }, + "line_search": { + "use_grad_norm_tol": 1e-07 + } }, "contact": { "barrier_stiffness": 100000000.0 + }, + "advanced": { + "characteristic_force_density": 1, + "characteristic_length": 1 } }, "materials": { diff --git a/optimizations/3d-shape-layer-thickness/run.json b/optimizations/3d-shape-layer-thickness/run.json index 36381ac..8753edb 100644 --- a/optimizations/3d-shape-layer-thickness/run.json +++ b/optimizations/3d-shape-layer-thickness/run.json @@ -72,8 +72,21 @@ "nonlinear": { "solver": "L-BFGS", "max_iterations": 10, - "grad_norm": 1e-4, - "x_delta": 0 + "norm_type": "Euclidean", + "first_grad_norm_tol": 1e-10, + "grad_norm_tol": 0.0001, + "x_delta_tol": 0, + "advanced": { + "f_delta_tol": 0, + "derivative_along_delta_x_tol": 0 + }, + "line_search": { + "use_grad_norm_tol": 1e-06 + } + }, + "advanced": { + "characteristic_force_density": 1, + "characteristic_length": 1 } }, "states": [ @@ -81,4 +94,4 @@ "path": "state.json" } ] -} +} \ No newline at end of file diff --git a/optimizations/3d-shape-layer-thickness/state.json b/optimizations/3d-shape-layer-thickness/state.json index 3c529f7..749d1c4 100644 --- a/optimizations/3d-shape-layer-thickness/state.json +++ b/optimizations/3d-shape-layer-thickness/state.json @@ -41,14 +41,32 @@ }, "solver": { "linear": { - "solver": ["Eigen::PardisoLDLT", "Eigen::CholmodSupernodalLLT", "Eigen::SimplicialLDLT"] + "solver": [ + "Eigen::PardisoLDLT", + "Eigen::CholmodSupernodalLLT", + "Eigen::SimplicialLDLT" + ] }, "nonlinear": { - "grad_norm": 1e-8, - "max_iterations": 500 + "max_iterations": 500, + "norm_type": "Euclidean", + "first_grad_norm_tol": 1.0000000000000001e-11, + "grad_norm_tol": 1e-09, + "x_delta_tol": 0.0, + "advanced": { + "f_delta_tol": 0.0, + "derivative_along_delta_x_tol": 0.0 + }, + "line_search": { + "use_grad_norm_tol": 1e-07 + } }, "contact": { "barrier_stiffness": 1000.0 + }, + "advanced": { + "characteristic_force_density": 1, + "characteristic_length": 1 } }, "materials": { @@ -88,4 +106,4 @@ "save_time_sequence": false } } -} +} \ No newline at end of file diff --git a/optimizations/AMIPS-debug/run.json b/optimizations/AMIPS-debug/run.json index 037214d..dacd3be 100644 --- a/optimizations/AMIPS-debug/run.json +++ b/optimizations/AMIPS-debug/run.json @@ -12,13 +12,22 @@ "nonlinear": { "solver": "L-BFGS", "max_iterations": 50, - "grad_norm": 1e-4, - "x_delta": 0, - "first_grad_norm_tol": 1e-8, + "first_grad_norm_tol": 1e-08, "line_search": { "use_grad_norm_tol": 0.0, "method": "Backtracking" + }, + "norm_type": "Euclidean", + "grad_norm_tol": 0.0001, + "x_delta_tol": 0, + "advanced": { + "f_delta_tol": 0, + "derivative_along_delta_x_tol": 0 } + }, + "advanced": { + "characteristic_force_density": 1, + "characteristic_length": 1 } }, "functionals": [], diff --git a/optimizations/AMIPS-debug/state.json b/optimizations/AMIPS-debug/state.json index 7971795..ac6f705 100644 --- a/optimizations/AMIPS-debug/state.json +++ b/optimizations/AMIPS-debug/state.json @@ -31,6 +31,23 @@ "solver": { "linear": { "solver": "Eigen::LDLT" + }, + "advanced": { + "characteristic_force_density": 1, + "characteristic_length": 1 + }, + "nonlinear": { + "norm_type": "Euclidean", + "first_grad_norm_tol": 1e-10, + "grad_norm_tol": 1e-08, + "x_delta_tol": 0, + "advanced": { + "f_delta_tol": 0, + "derivative_along_delta_x_tol": 0 + }, + "line_search": { + "use_grad_norm_tol": 1e-06 + } } }, "boundary_conditions": { diff --git a/optimizations/damping-opt/run.json b/optimizations/damping-opt/run.json index 09d338c..778b9d1 100644 --- a/optimizations/damping-opt/run.json +++ b/optimizations/damping-opt/run.json @@ -5,15 +5,28 @@ }, "solver": { "nonlinear": { - "first_grad_norm_tol": 1e-6, + "first_grad_norm_tol": 1e-06, "solver": "L-BFGS", - "min_step_size": 1e-5, + "min_step_size": 1e-05, "max_step_size": 1, "debug_fd": false, - "debug_fd_eps": 1e-7, + "debug_fd_eps": 1e-07, "max_iterations": 5, "export_energy": "damping-opt", - "grad_norm": 1e-9 + "norm_type": "Euclidean", + "grad_norm_tol": 1e-09, + "x_delta_tol": 0, + "advanced": { + "f_delta_tol": 0, + "derivative_along_delta_x_tol": 0 + }, + "line_search": { + "use_grad_norm_tol": 1e-06 + } + }, + "advanced": { + "characteristic_force_density": 1, + "characteristic_length": 1 } }, "states": [ diff --git a/optimizations/damping-opt/state.json b/optimizations/damping-opt/state.json index e7ea0d3..8f67945 100644 --- a/optimizations/damping-opt/state.json +++ b/optimizations/damping-opt/state.json @@ -1,10 +1,14 @@ { - "geometry": [{ + "geometry": [ + { "mesh": "wave.msh", "is_obstacle": true, "transformation": { "rotation": 30, - "scale": [6, 3] + "scale": [ + 6, + 3 + ] }, "volume_selection": 3, "surface_selection": 3 @@ -12,7 +16,10 @@ { "mesh": "micro.msh", "transformation": { - "translation": [1, 1], + "translation": [ + 1, + 1 + ], "rotation": 30, "scale": 0.005 }, @@ -40,10 +47,30 @@ }, "solver": { "linear": { - "solver": ["Eigen::PardisoLDLT", "Eigen::SimplicialLDLT"] + "solver": [ + "Eigen::PardisoLDLT", + "Eigen::SimplicialLDLT" + ] }, "contact": { - "barrier_stiffness": 1e4 + "barrier_stiffness": 10000.0 + }, + "advanced": { + "characteristic_force_density": 1, + "characteristic_length": 1 + }, + "nonlinear": { + "norm_type": "Euclidean", + "first_grad_norm_tol": 4e-12, + "grad_norm_tol": 4e-10, + "x_delta_tol": 0.0, + "advanced": { + "f_delta_tol": 0.0, + "derivative_along_delta_x_tol": 0.0 + }, + "line_search": { + "use_grad_norm_tol": 4e-08 + } } }, "boundary_conditions": { @@ -51,17 +78,19 @@ 0, 9.8 ], - "dirichlet_boundary": [{ - "id": 3, - "value": [ - 0, - 0 - ] - }] + "dirichlet_boundary": [ + { + "id": 3, + "value": [ + 0, + 0 + ] + } + ] }, "materials": { "type": "NeoHookean", - "E": 1e5, + "E": 100000.0, "nu": 0.5, "rho": 100, "phi": 0.01, diff --git a/optimizations/damping-opt/target.json b/optimizations/damping-opt/target.json index 314869b..dd6d550 100755 --- a/optimizations/damping-opt/target.json +++ b/optimizations/damping-opt/target.json @@ -1,10 +1,14 @@ { - "geometry": [{ + "geometry": [ + { "mesh": "wave.msh", "is_obstacle": true, "transformation": { "rotation": 30, - "scale": [6, 3] + "scale": [ + 6, + 3 + ] }, "volume_selection": 3, "surface_selection": 3 @@ -12,7 +16,10 @@ { "mesh": "micro.msh", "transformation": { - "translation": [1, 1], + "translation": [ + 1, + 1 + ], "rotation": 30, "scale": 0.005 }, @@ -40,10 +47,30 @@ }, "solver": { "linear": { - "solver": ["Eigen::PardisoLDLT", "Eigen::SimplicialLDLT"] + "solver": [ + "Eigen::PardisoLDLT", + "Eigen::SimplicialLDLT" + ] }, "contact": { - "barrier_stiffness": 1e4 + "barrier_stiffness": 10000.0 + }, + "advanced": { + "characteristic_force_density": 1, + "characteristic_length": 1 + }, + "nonlinear": { + "norm_type": "Euclidean", + "first_grad_norm_tol": 4e-12, + "grad_norm_tol": 4e-10, + "x_delta_tol": 0.0, + "advanced": { + "f_delta_tol": 0.0, + "derivative_along_delta_x_tol": 0.0 + }, + "line_search": { + "use_grad_norm_tol": 4e-08 + } } }, "boundary_conditions": { @@ -51,17 +78,19 @@ 0, 9.8 ], - "dirichlet_boundary": [{ - "id": 3, - "value": [ - 0, - 0 - ] - }] + "dirichlet_boundary": [ + { + "id": 3, + "value": [ + 0, + 0 + ] + } + ] }, "materials": { "type": "NeoHookean", - "E": 1e5, + "E": 100000.0, "nu": 0.5, "rho": 100, "phi": 1, diff --git a/optimizations/friction-opt/run.json b/optimizations/friction-opt/run.json index 2197731..37b5f35 100644 --- a/optimizations/friction-opt/run.json +++ b/optimizations/friction-opt/run.json @@ -5,15 +5,28 @@ }, "solver": { "nonlinear": { - "first_grad_norm_tol": 1e-6, + "first_grad_norm_tol": 1e-06, "solver": "L-BFGS", - "min_step_size": 1e-5, + "min_step_size": 1e-05, "max_step_size": 1, "debug_fd": false, - "debug_fd_eps": 1e-7, + "debug_fd_eps": 1e-07, "max_iterations": 5, "export_energy": "friction-opt", - "grad_norm": 1e-9 + "norm_type": "Euclidean", + "grad_norm_tol": 1e-09, + "x_delta_tol": 0, + "advanced": { + "f_delta_tol": 0, + "derivative_along_delta_x_tol": 0 + }, + "line_search": { + "use_grad_norm_tol": 1e-06 + } + }, + "advanced": { + "characteristic_force_density": 1, + "characteristic_length": 1 } }, "states": [ diff --git a/optimizations/friction-opt/state.json b/optimizations/friction-opt/state.json index 3b7bf45..21f78f8 100644 --- a/optimizations/friction-opt/state.json +++ b/optimizations/friction-opt/state.json @@ -1,10 +1,14 @@ { - "geometry": [{ + "geometry": [ + { "mesh": "wave.msh", "is_obstacle": true, "transformation": { "rotation": 30, - "scale": [6, 3] + "scale": [ + 6, + 3 + ] }, "volume_selection": 3, "surface_selection": 3 @@ -12,7 +16,10 @@ { "mesh": "micro.msh", "transformation": { - "translation": [1, 1], + "translation": [ + 1, + 1 + ], "rotation": 30, "scale": 0.005 }, @@ -40,10 +47,30 @@ }, "solver": { "linear": { - "solver": ["Eigen::PardisoLDLT", "Eigen::SimplicialLDLT"] + "solver": [ + "Eigen::PardisoLDLT", + "Eigen::SimplicialLDLT" + ] }, "contact": { - "barrier_stiffness": 1e4 + "barrier_stiffness": 10000.0 + }, + "advanced": { + "characteristic_force_density": 1, + "characteristic_length": 1 + }, + "nonlinear": { + "norm_type": "Euclidean", + "first_grad_norm_tol": 4e-12, + "grad_norm_tol": 4e-10, + "x_delta_tol": 0.0, + "advanced": { + "f_delta_tol": 0.0, + "derivative_along_delta_x_tol": 0.0 + }, + "line_search": { + "use_grad_norm_tol": 4e-08 + } } }, "boundary_conditions": { @@ -51,17 +78,19 @@ 0, 9.8 ], - "dirichlet_boundary": [{ - "id": 3, - "value": [ - 0, - 0 - ] - }] + "dirichlet_boundary": [ + { + "id": 3, + "value": [ + 0, + 0 + ] + } + ] }, "materials": { "type": "NeoHookean", - "E": 1e5, + "E": 100000.0, "nu": 0.5, "rho": 100 }, diff --git a/optimizations/friction-opt/target.json b/optimizations/friction-opt/target.json index 1a3c786..e40d4f7 100755 --- a/optimizations/friction-opt/target.json +++ b/optimizations/friction-opt/target.json @@ -1,10 +1,14 @@ { - "geometry": [{ + "geometry": [ + { "mesh": "wave.msh", "is_obstacle": true, "transformation": { "rotation": 30, - "scale": [6, 3] + "scale": [ + 6, + 3 + ] }, "volume_selection": 3, "surface_selection": 3 @@ -12,7 +16,10 @@ { "mesh": "micro.msh", "transformation": { - "translation": [1, 1], + "translation": [ + 1, + 1 + ], "rotation": 30, "scale": 0.005 }, @@ -40,10 +47,30 @@ }, "solver": { "linear": { - "solver": ["Eigen::PardisoLDLT", "Eigen::SimplicialLDLT"] + "solver": [ + "Eigen::PardisoLDLT", + "Eigen::SimplicialLDLT" + ] }, "contact": { - "barrier_stiffness": 1e4 + "barrier_stiffness": 10000.0 + }, + "advanced": { + "characteristic_force_density": 1, + "characteristic_length": 1 + }, + "nonlinear": { + "norm_type": "Euclidean", + "first_grad_norm_tol": 4e-12, + "grad_norm_tol": 4e-10, + "x_delta_tol": 0.0, + "advanced": { + "f_delta_tol": 0.0, + "derivative_along_delta_x_tol": 0.0 + }, + "line_search": { + "use_grad_norm_tol": 4e-08 + } } }, "boundary_conditions": { @@ -51,17 +78,19 @@ 0, 9.8 ], - "dirichlet_boundary": [{ - "id": 3, - "value": [ - 0, - 0 - ] - }] + "dirichlet_boundary": [ + { + "id": 3, + "value": [ + 0, + 0 + ] + } + ] }, "materials": { "type": "NeoHookean", - "E": 1e5, + "E": 100000.0, "nu": 0.5, "rho": 100 }, diff --git a/optimizations/initial-condition-trajectory-opt/barycenter-target.json b/optimizations/initial-condition-trajectory-opt/barycenter-target.json index f29255e..c8569be 100644 --- a/optimizations/initial-condition-trajectory-opt/barycenter-target.json +++ b/optimizations/initial-condition-trajectory-opt/barycenter-target.json @@ -50,9 +50,24 @@ ] }, "nonlinear": { + "norm_type": "Euclidean", + "first_grad_norm_tol": 2e-12, + "grad_norm_tol": 2e-10, + "x_delta_tol": 0.0, + "advanced": { + "f_delta_tol": 0.0, + "derivative_along_delta_x_tol": 0.0 + }, + "line_search": { + "use_grad_norm_tol": 2e-08 + } }, "contact": { - "barrier_stiffness": 1e5 + "barrier_stiffness": 100000.0 + }, + "advanced": { + "characteristic_force_density": 1, + "characteristic_length": 1 } }, "boundary_conditions": { diff --git a/optimizations/initial-condition-trajectory-opt/barycenter.json b/optimizations/initial-condition-trajectory-opt/barycenter.json index d889957..cc8b923 100644 --- a/optimizations/initial-condition-trajectory-opt/barycenter.json +++ b/optimizations/initial-condition-trajectory-opt/barycenter.json @@ -50,9 +50,24 @@ ] }, "nonlinear": { + "norm_type": "Euclidean", + "first_grad_norm_tol": 2e-12, + "grad_norm_tol": 2e-10, + "x_delta_tol": 0.0, + "advanced": { + "f_delta_tol": 0.0, + "derivative_along_delta_x_tol": 0.0 + }, + "line_search": { + "use_grad_norm_tol": 2e-08 + } }, "contact": { - "barrier_stiffness": 1e5 + "barrier_stiffness": 100000.0 + }, + "advanced": { + "characteristic_force_density": 1, + "characteristic_length": 1 } }, "boundary_conditions": { diff --git a/optimizations/initial-condition-trajectory-opt/run.json b/optimizations/initial-condition-trajectory-opt/run.json index f407010..cae4c03 100644 --- a/optimizations/initial-condition-trajectory-opt/run.json +++ b/optimizations/initial-condition-trajectory-opt/run.json @@ -3,18 +3,25 @@ { "type": "initial", "state": 0, - "composition": [{ - "type": "append-values", - "values": [0, 0] - },{ - "type": "per-body-to-per-node", - "state": 0 - },{ - "type": "append-const", - "value": 0, - "size": 146, - "start": 0 - }] + "composition": [ + { + "type": "append-values", + "values": [ + 0, + 0 + ] + }, + { + "type": "per-body-to-per-node", + "state": 0 + }, + { + "type": "append-const", + "value": 0, + "size": 146, + "start": 0 + } + ] } ], "output": { @@ -25,20 +32,35 @@ "solver": { "nonlinear": { "line_search": { - "method": "Backtracking" + "method": "Backtracking", + "use_grad_norm_tol": 1e-06 }, "solver": "L-BFGS", "L-BFGS": { "history_size": 2 }, "max_iterations": 5, - "grad_norm": 1e-5 + "norm_type": "Euclidean", + "first_grad_norm_tol": 1e-10, + "grad_norm_tol": 1e-05, + "x_delta_tol": 0, + "advanced": { + "f_delta_tol": 0, + "derivative_along_delta_x_tol": 0 + } + }, + "advanced": { + "characteristic_force_density": 1, + "characteristic_length": 1 } }, "parameters": [ { "number": 2, - "initial": [4, 0] + "initial": [ + 4, + 0 + ] } ], "functionals": [ @@ -47,12 +69,13 @@ "state": 0, "weight": 10, "integral_type": "uniform", - "static_objective": - { + "static_objective": { "type": "center-target", "state": 0, "target_state": 1, - "volume_selection": [1] + "volume_selection": [ + 1 + ] } } ], diff --git a/optimizations/initial-opt/run.json b/optimizations/initial-opt/run.json index aa5d791..992d23e 100644 --- a/optimizations/initial-opt/run.json +++ b/optimizations/initial-opt/run.json @@ -42,6 +42,23 @@ "solver": { "contact": { "barrier_stiffness": 100000.0 + }, + "advanced": { + "characteristic_force_density": 1, + "characteristic_length": 1 + }, + "nonlinear": { + "norm_type": "Euclidean", + "first_grad_norm_tol": 2e-12, + "grad_norm_tol": 2e-10, + "x_delta_tol": 0.0, + "advanced": { + "f_delta_tol": 0.0, + "derivative_along_delta_x_tol": 0.0 + }, + "line_search": { + "use_grad_norm_tol": 2e-08 + } } }, "boundary_conditions": { diff --git a/optimizations/initial-opt/target.json b/optimizations/initial-opt/target.json index 72fe588..3c58526 100644 --- a/optimizations/initial-opt/target.json +++ b/optimizations/initial-opt/target.json @@ -42,6 +42,23 @@ "solver": { "contact": { "barrier_stiffness": 100000.0 + }, + "advanced": { + "characteristic_force_density": 1, + "characteristic_length": 1 + }, + "nonlinear": { + "norm_type": "Euclidean", + "first_grad_norm_tol": 2e-12, + "grad_norm_tol": 2e-10, + "x_delta_tol": 0.0, + "advanced": { + "f_delta_tol": 0.0, + "derivative_along_delta_x_tol": 0.0 + }, + "line_search": { + "use_grad_norm_tol": 2e-08 + } } }, "boundary_conditions": { diff --git a/optimizations/macro_strain-opt/run.json b/optimizations/macro_strain-opt/run.json index 130375c..a88dc38 100644 --- a/optimizations/macro_strain-opt/run.json +++ b/optimizations/macro_strain-opt/run.json @@ -6,13 +6,27 @@ "solver": { "nonlinear": { "solver": "L-BFGS", - "min_step_size": 1e-8, + "min_step_size": 1e-08, "max_step_size": 1, "debug_fd": false, - "debug_fd_eps": 1e-7, + "debug_fd_eps": 1e-07, "max_iterations": 100, "export_energy": "macro_strain-opt", - "grad_norm": 1e-7 + "norm_type": "Euclidean", + "first_grad_norm_tol": 1e-10, + "grad_norm_tol": 1e-07, + "x_delta_tol": 0, + "advanced": { + "f_delta_tol": 0, + "derivative_along_delta_x_tol": 0 + }, + "line_search": { + "use_grad_norm_tol": 1e-06 + } + }, + "advanced": { + "characteristic_force_density": 1, + "characteristic_length": 1 } }, "states": [ diff --git a/optimizations/macro_strain-opt/state.json b/optimizations/macro_strain-opt/state.json index cadf700..eeafbda 100644 --- a/optimizations/macro_strain-opt/state.json +++ b/optimizations/macro_strain-opt/state.json @@ -3,7 +3,7 @@ { "mesh": "CMM.msh", "surface_selection": { - "threshold": 1e-5 + "threshold": 1e-05 }, "transformation": { "scale": 1 @@ -27,16 +27,45 @@ "adjoint_solver": "Eigen::PardisoLDLT" }, "contact": { - "barrier_stiffness": 1e4 + "barrier_stiffness": 10000.0 + }, + "advanced": { + "characteristic_force_density": 1, + "characteristic_length": 1 + }, + "nonlinear": { + "norm_type": "Euclidean", + "first_grad_norm_tol": 1e-10, + "grad_norm_tol": 1e-08, + "x_delta_tol": 0, + "advanced": { + "f_delta_tol": 0, + "derivative_along_delta_x_tol": 0 + }, + "line_search": { + "use_grad_norm_tol": 1e-06 + } } }, "boundary_conditions": { - "periodic_boundary": [true, true], - "linear_displacement_offset": [[-0.04, 0],[0,-0.1]] + "periodic_boundary": [ + true, + true + ], + "linear_displacement_offset": [ + [ + -0.04, + 0 + ], + [ + 0, + -0.1 + ] + ] }, "materials": { "type": "NeoHookean", - "E": 1e4, + "E": 10000.0, "nu": 0.5, "rho": 1 } diff --git a/optimizations/material-opt/run.json b/optimizations/material-opt/run.json index 2f04e1d..d46d4aa 100644 --- a/optimizations/material-opt/run.json +++ b/optimizations/material-opt/run.json @@ -8,7 +8,20 @@ "first_grad_norm_tol": 1e-10, "solver": "GradientDescent", "max_iterations": 5, - "grad_norm": 1e-9 + "norm_type": "Euclidean", + "grad_norm_tol": 1e-09, + "x_delta_tol": 0, + "advanced": { + "f_delta_tol": 0, + "derivative_along_delta_x_tol": 0 + }, + "line_search": { + "use_grad_norm_tol": 1e-06 + } + }, + "advanced": { + "characteristic_force_density": 1, + "characteristic_length": 1 } }, "states": [ @@ -36,7 +49,10 @@ ], "parameters": [ { - "initial": [10.0088, 7.92941], + "initial": [ + 10.0088, + 7.92941 + ], "number": 2 } ], diff --git a/optimizations/material-opt/state.json b/optimizations/material-opt/state.json index bef92e1..0b9438c 100644 --- a/optimizations/material-opt/state.json +++ b/optimizations/material-opt/state.json @@ -55,10 +55,24 @@ }, "nonlinear": { "max_iterations": 200, - "grad_norm": 1e-3 + "norm_type": "Euclidean", + "first_grad_norm_tol": 4e-12, + "grad_norm_tol": 4e-05, + "x_delta_tol": 0.0, + "advanced": { + "f_delta_tol": 0.0, + "derivative_along_delta_x_tol": 0.0 + }, + "line_search": { + "use_grad_norm_tol": 4e-08 + } }, "contact": { - "barrier_stiffness": 1e4 + "barrier_stiffness": 10000.0 + }, + "advanced": { + "characteristic_force_density": 1, + "characteristic_length": 1 } }, "boundary_conditions": { @@ -78,7 +92,7 @@ }, "materials": { "type": "NeoHookean", - "E": 1e4, + "E": 10000.0, "nu": 0.8, "rho": 100 }, @@ -88,7 +102,9 @@ "high_order_mesh": false, "vismesh_rel_area": 1 }, - "log": {"level": 3}, + "log": { + "level": 3 + }, "advanced": { "save_time_sequence": true } diff --git a/optimizations/material-opt/target.json b/optimizations/material-opt/target.json index 21b93d0..22e94d8 100755 --- a/optimizations/material-opt/target.json +++ b/optimizations/material-opt/target.json @@ -55,10 +55,24 @@ }, "nonlinear": { "max_iterations": 200, - "grad_norm": 1e-3 + "norm_type": "Euclidean", + "first_grad_norm_tol": 4e-12, + "grad_norm_tol": 4e-05, + "x_delta_tol": 0.0, + "advanced": { + "f_delta_tol": 0.0, + "derivative_along_delta_x_tol": 0.0 + }, + "line_search": { + "use_grad_norm_tol": 4e-08 + } }, "contact": { - "barrier_stiffness": 1e4 + "barrier_stiffness": 10000.0 + }, + "advanced": { + "characteristic_force_density": 1, + "characteristic_length": 1 } }, "boundary_conditions": { @@ -78,7 +92,7 @@ }, "materials": { "type": "NeoHookean", - "E": 1e5, + "E": 100000.0, "nu": 0.5, "rho": 100 }, @@ -88,7 +102,9 @@ "high_order_mesh": false, "vismesh_rel_area": 1 }, - "log": {"level": 3}, + "log": { + "level": 3 + }, "advanced": { "save_time_sequence": false } diff --git a/optimizations/multiparameter-sdf-trajectory-surface-opt/run.json b/optimizations/multiparameter-sdf-trajectory-surface-opt/run.json index b2328ac..671d75f 100644 --- a/optimizations/multiparameter-sdf-trajectory-surface-opt/run.json +++ b/optimizations/multiparameter-sdf-trajectory-surface-opt/run.json @@ -49,12 +49,12 @@ "smoothing_parameters": { "min_iter": 2, "tol": 1e-10, - "soft_p": 1e5, + "soft_p": 100000.0, "exp_factor": 5 }, "contact": { "CCD": { - "tolerance": 1e-6, + "tolerance": 1e-06, "max_iterations": 1000000 }, "enabled": true @@ -122,16 +122,15 @@ "type": "collision_barrier", "shape_parameter": 0, "weight": 1, - "dhat": 1e-2 + "dhat": 0.01 } ], "solver": { "nonlinear": { "solver": "L-BFGS", - "min_step_size": 1e-8, + "min_step_size": 1e-08, "max_step_size": 1.0, "max_iterations": 4, - "grad_norm": 1e-4, "line_search": { "method": "Backtracking", "use_grad_norm_tol": 0 @@ -141,10 +140,22 @@ "use_grad_norm": true, "solver_info_log": true, "debug_fd": false, - "debug_fd_eps": 1e-3 + "debug_fd_eps": 0.001, + "norm_type": "Euclidean", + "first_grad_norm_tol": 1e-10, + "grad_norm_tol": 0.0001, + "x_delta_tol": 0, + "advanced": { + "f_delta_tol": 0, + "derivative_along_delta_x_tol": 0 + } }, "contact": { "enabled": false + }, + "advanced": { + "characteristic_force_density": 1, + "characteristic_length": 1 } }, "states": [ diff --git a/optimizations/multiparameter-sdf-trajectory-surface-opt/state.json b/optimizations/multiparameter-sdf-trajectory-surface-opt/state.json index 71f167e..e82370f 100644 --- a/optimizations/multiparameter-sdf-trajectory-surface-opt/state.json +++ b/optimizations/multiparameter-sdf-trajectory-surface-opt/state.json @@ -91,13 +91,30 @@ }, "solver": { "linear": { - "solver": ["Eigen::PardisoLDLT","Eigen::SimplicialLDLT"] + "solver": [ + "Eigen::PardisoLDLT", + "Eigen::SimplicialLDLT" + ] }, "nonlinear": { - "grad_norm": 1e-8 + "norm_type": "Euclidean", + "first_grad_norm_tol": 1.0000000000000001e-11, + "grad_norm_tol": 1e-09, + "x_delta_tol": 0.0, + "advanced": { + "f_delta_tol": 0.0, + "derivative_along_delta_x_tol": 0.0 + }, + "line_search": { + "use_grad_norm_tol": 1e-07 + } }, "contact": { "barrier_stiffness": 100000000.0 + }, + "advanced": { + "characteristic_force_density": 1, + "characteristic_length": 1 } }, "boundary_conditions": { diff --git a/optimizations/shape-stress-bbw-opt/run.json b/optimizations/shape-stress-bbw-opt/run.json index 6bda7f1..a3d5f59 100644 --- a/optimizations/shape-stress-bbw-opt/run.json +++ b/optimizations/shape-stress-bbw-opt/run.json @@ -61,9 +61,23 @@ "nonlinear": { "solver": "L-BFGS", "max_iterations": 4, - "grad_norm": 1e-4, "export_energy": "shape-stress-bbw-opt", - "solver_info_log": true + "solver_info_log": true, + "norm_type": "Euclidean", + "first_grad_norm_tol": 1e-10, + "grad_norm_tol": 0.0001, + "x_delta_tol": 0, + "advanced": { + "f_delta_tol": 0, + "derivative_along_delta_x_tol": 0 + }, + "line_search": { + "use_grad_norm_tol": 1e-06 + } + }, + "advanced": { + "characteristic_force_density": 1, + "characteristic_length": 1 } }, "functionals": [ diff --git a/optimizations/shape-stress-bbw-opt/state.json b/optimizations/shape-stress-bbw-opt/state.json index ae7e5d0..9f64ebf 100644 --- a/optimizations/shape-stress-bbw-opt/state.json +++ b/optimizations/shape-stress-bbw-opt/state.json @@ -1,20 +1,23 @@ { - "geometry": [{ - "mesh": "../bar-2523.msh", - "volume_selection": 1, - "n_refs": 0, - "surface_selection": [{ - "id": 1, - "axis": "-x", - "position": 2.5 - }, - { - "id": 2, - "axis": "+x", - "position": 2.5 - } - ] - }], + "geometry": [ + { + "mesh": "../bar-2523.msh", + "volume_selection": 1, + "n_refs": 0, + "surface_selection": [ + { + "id": 1, + "axis": "-x", + "position": 2.5 + }, + { + "id": 2, + "axis": "+x", + "position": 2.5 + } + ] + } + ], "space": { "discr_order": 1, "advanced": { @@ -23,7 +26,27 @@ }, "solver": { "linear": { - "solver": ["Eigen::PardisoLDLT", "Eigen::SimplicialLDLT"] + "solver": [ + "Eigen::PardisoLDLT", + "Eigen::SimplicialLDLT" + ] + }, + "advanced": { + "characteristic_force_density": 1, + "characteristic_length": 1 + }, + "nonlinear": { + "norm_type": "Euclidean", + "first_grad_norm_tol": 1e-10, + "grad_norm_tol": 1e-08, + "x_delta_tol": 0, + "advanced": { + "f_delta_tol": 0, + "derivative_along_delta_x_tol": 0 + }, + "line_search": { + "use_grad_norm_tol": 1e-06 + } } }, "boundary_conditions": { @@ -32,18 +55,20 @@ 9.81, 0 ], - "dirichlet_boundary": [{ - "id": 1, - "value": [ - 0, - 0, - 0 - ] - }] + "dirichlet_boundary": [ + { + "id": 1, + "value": [ + 0, + 0, + 0 + ] + } + ] }, "materials": { "type": "NeoHookean", - "E": 1e8, + "E": 100000000.0, "nu": 0.47, "rho": 1000 }, diff --git a/optimizations/shape-stress-opt/run.json b/optimizations/shape-stress-opt/run.json index 3b7882c..107baa2 100644 --- a/optimizations/shape-stress-opt/run.json +++ b/optimizations/shape-stress-opt/run.json @@ -28,15 +28,28 @@ "nonlinear": { "solver": "L-BFGS", "max_iterations": 9, - "grad_norm": 1e-4, - "x_delta": 0 + "norm_type": "Euclidean", + "first_grad_norm_tol": 1e-10, + "grad_norm_tol": 0.0001, + "x_delta_tol": 0, + "advanced": { + "f_delta_tol": 0, + "derivative_along_delta_x_tol": 0 + }, + "line_search": { + "use_grad_norm_tol": 1e-06 + } + }, + "advanced": { + "characteristic_force_density": 1, + "characteristic_length": 1 } }, "functionals": [ { "type": "power", "power": 0.125, - "weight": 1e-3, + "weight": 0.001, "objective": { "type": "stress_norm", "power": 8, @@ -58,12 +71,12 @@ "weight": 10, "soft_bound": [ 0, - 2.36226e-1 + 0.236226 ] }, { "type": "boundary_smoothing", - "weight": 1e-3, + "weight": 0.001, "state": 0, "scale_invariant": true, "power": 4, @@ -71,7 +84,7 @@ }, { "type": "AMIPS", - "weight": 1e-6, + "weight": 1e-06, "state": 0, "volume_selection": [ 1 diff --git a/optimizations/shape-stress-opt/state.json b/optimizations/shape-stress-opt/state.json index 20cca0e..9a46e87 100644 --- a/optimizations/shape-stress-opt/state.json +++ b/optimizations/shape-stress-opt/state.json @@ -1,83 +1,92 @@ { - "geometry": [{ - "mesh": "bridge-uniform.msh", - "volume_selection": 1, - "n_refs": 0, - "surface_selection": [{ - "id": 10, - "box": [ - [ - -1.00001, - -0.02 - ], - [ - -0.9999, - 0.027 + "geometry": [ + { + "mesh": "bridge-uniform.msh", + "volume_selection": 1, + "n_refs": 0, + "surface_selection": [ + { + "id": 10, + "box": [ + [ + -1.00001, + -0.02 + ], + [ + -0.9999, + 0.027 + ] ] - ] - }, - { - "id": 10, - "box": [ - [ - 0.9999, - -0.02 - ], - [ - 1.00001, - 0.027 + }, + { + "id": 10, + "box": [ + [ + 0.9999, + -0.02 + ], + [ + 1.00001, + 0.027 + ] ] - ] - }, - { - "id": 11, - "box": [ - [ - -0.6766, - 0.0 - ], - [ - -0.6566, - 0.1 + }, + { + "id": 11, + "box": [ + [ + -0.6766, + 0.0 + ], + [ + -0.6566, + 0.1 + ] ] - ] - }, - { - "id": 11, - "box": [ - [ - -0.01, - 0.0 - ], - [ - 0.01, - 0.1 + }, + { + "id": 11, + "box": [ + [ + -0.01, + 0.0 + ], + [ + 0.01, + 0.1 + ] ] - ] - }, - { - "id": 11, - "box": [ - [ - 0.6566, - 0.0 - ], - [ - 0.6766, - 0.1 + }, + { + "id": 11, + "box": [ + [ + 0.6566, + 0.0 + ], + [ + 0.6766, + 0.1 + ] ] - ] - }, - { - "id": 1, - "box": [ - [0, 0], - [1, 1] - ], - "relative": true - } - ] - }], + }, + { + "id": 1, + "box": [ + [ + 0, + 0 + ], + [ + 1, + 1 + ] + ], + "relative": true + } + ] + } + ], "space": { "discr_order": 2, "advanced": { @@ -86,24 +95,48 @@ }, "solver": { "linear": { - "solver": ["Eigen::PardisoLDLT", "Eigen::SimplicialLDLT"] + "solver": [ + "Eigen::PardisoLDLT", + "Eigen::SimplicialLDLT" + ] + }, + "advanced": { + "characteristic_force_density": 1, + "characteristic_length": 1 + }, + "nonlinear": { + "norm_type": "Euclidean", + "first_grad_norm_tol": 1e-10, + "grad_norm_tol": 1e-08, + "x_delta_tol": 0, + "advanced": { + "f_delta_tol": 0, + "derivative_along_delta_x_tol": 0 + }, + "line_search": { + "use_grad_norm_tol": 1e-06 + } } }, "boundary_conditions": { - "dirichlet_boundary": [{ - "id": 10, - "value": [ - 0, - 0 - ] - }], - "neumann_boundary": [{ - "id": 11, - "value": [ - 0, - "-0.1/0.0206065848" - ] - }] + "dirichlet_boundary": [ + { + "id": 10, + "value": [ + 0, + 0 + ] + } + ], + "neumann_boundary": [ + { + "id": 11, + "value": [ + 0, + "-0.1/0.0206065848" + ] + } + ] }, "materials": { "type": "LinearElasticity", diff --git a/optimizations/shape-trajectory-surface-opt-bspline/run.json b/optimizations/shape-trajectory-surface-opt-bspline/run.json index 691f284..cd32d1e 100644 --- a/optimizations/shape-trajectory-surface-opt-bspline/run.json +++ b/optimizations/shape-trajectory-surface-opt-bspline/run.json @@ -25,24 +25,33 @@ "export_energy": "shape-trajectory-surface-opt-bspline", "solver": "L-BFGS", "better_initial_guess": true, - "min_step_size": 1e-8, + "min_step_size": 1e-08, "max_step_size": 1, "max_iterations": 4, - "grad_norm": 1e-4, "debug_fd": true, - "debug_fd_eps": 1e-7, - "x_delta": 0, + "debug_fd_eps": 1e-07, "export_energy_components": false, "solver_info_log": true, "relative_gradient": false, - "first_grad_norm_tol": 1e-8, + "first_grad_norm_tol": 1e-08, "line_search": { "use_grad_norm_tol": 0.0, "method": "Backtracking" + }, + "norm_type": "Euclidean", + "grad_norm_tol": 0.0001, + "x_delta_tol": 0, + "advanced": { + "f_delta_tol": 0, + "derivative_along_delta_x_tol": 0 } }, "contact": { "enabled": false + }, + "advanced": { + "characteristic_force_density": 1, + "characteristic_length": 1 } }, "states": [ diff --git a/optimizations/shape-trajectory-surface-opt-bspline/state.json b/optimizations/shape-trajectory-surface-opt-bspline/state.json index d229633..d311967 100644 --- a/optimizations/shape-trajectory-surface-opt-bspline/state.json +++ b/optimizations/shape-trajectory-surface-opt-bspline/state.json @@ -91,13 +91,30 @@ }, "solver": { "linear": { - "solver": ["Eigen::PardisoLDLT","Eigen::SimplicialLDLT"] + "solver": [ + "Eigen::PardisoLDLT", + "Eigen::SimplicialLDLT" + ] }, "nonlinear": { - "grad_norm": 1e-8 + "norm_type": "Euclidean", + "first_grad_norm_tol": 1.0000000000000001e-11, + "grad_norm_tol": 1e-09, + "x_delta_tol": 0.0, + "advanced": { + "f_delta_tol": 0.0, + "derivative_along_delta_x_tol": 0.0 + }, + "line_search": { + "use_grad_norm_tol": 1e-07 + } }, "contact": { "barrier_stiffness": 100000000.0 + }, + "advanced": { + "characteristic_force_density": 1, + "characteristic_length": 1 } }, "boundary_conditions": { diff --git a/optimizations/shape-trajectory-surface-opt-bspline/target.json b/optimizations/shape-trajectory-surface-opt-bspline/target.json index 60847e6..d5aff24 100644 --- a/optimizations/shape-trajectory-surface-opt-bspline/target.json +++ b/optimizations/shape-trajectory-surface-opt-bspline/target.json @@ -91,13 +91,30 @@ }, "solver": { "linear": { - "solver": ["Eigen::PardisoLDLT","Eigen::SimplicialLDLT"] + "solver": [ + "Eigen::PardisoLDLT", + "Eigen::SimplicialLDLT" + ] }, "nonlinear": { - "grad_norm": 1e-8 + "norm_type": "Euclidean", + "first_grad_norm_tol": 1.0000000000000001e-11, + "grad_norm_tol": 1e-09, + "x_delta_tol": 0.0, + "advanced": { + "f_delta_tol": 0.0, + "derivative_along_delta_x_tol": 0.0 + }, + "line_search": { + "use_grad_norm_tol": 1e-07 + } }, "contact": { "barrier_stiffness": 100000000.0 + }, + "advanced": { + "characteristic_force_density": 1, + "characteristic_length": 1 } }, "boundary_conditions": { diff --git a/optimizations/shape-trajectory-surface-opt-new/run.json b/optimizations/shape-trajectory-surface-opt-new/run.json index f7937c3..b5b176f 100644 --- a/optimizations/shape-trajectory-surface-opt-new/run.json +++ b/optimizations/shape-trajectory-surface-opt-new/run.json @@ -23,10 +23,9 @@ "solver": { "nonlinear": { "solver": "L-BFGS", - "min_step_size": 1e-8, + "min_step_size": 1e-08, "max_step_size": 1.0, "max_iterations": 4, - "grad_norm": 1e-4, "line_search": { "method": "Backtracking", "use_grad_norm_tol": 0 @@ -34,10 +33,22 @@ "export_energy": "shape-trajectory-surface-opt-new", "relative_gradient": false, "use_grad_norm": true, - "solver_info_log": true + "solver_info_log": true, + "norm_type": "Euclidean", + "first_grad_norm_tol": 1e-10, + "grad_norm_tol": 0.0001, + "x_delta_tol": 0, + "advanced": { + "f_delta_tol": 0, + "derivative_along_delta_x_tol": 0 + } }, "contact": { "enabled": false + }, + "advanced": { + "characteristic_force_density": 1, + "characteristic_length": 1 } }, "states": [ diff --git a/optimizations/shape-trajectory-surface-opt-new/state.json b/optimizations/shape-trajectory-surface-opt-new/state.json index 79078fd..fdc27cd 100644 --- a/optimizations/shape-trajectory-surface-opt-new/state.json +++ b/optimizations/shape-trajectory-surface-opt-new/state.json @@ -91,13 +91,30 @@ }, "solver": { "linear": { - "solver": ["Eigen::PardisoLDLT","Eigen::SimplicialLDLT"] + "solver": [ + "Eigen::PardisoLDLT", + "Eigen::SimplicialLDLT" + ] }, "nonlinear": { - "grad_norm": 1e-8 + "norm_type": "Euclidean", + "first_grad_norm_tol": 1.0000000000000001e-11, + "grad_norm_tol": 1e-09, + "x_delta_tol": 0.0, + "advanced": { + "f_delta_tol": 0.0, + "derivative_along_delta_x_tol": 0.0 + }, + "line_search": { + "use_grad_norm_tol": 1e-07 + } }, "contact": { "barrier_stiffness": 100000000.0 + }, + "advanced": { + "characteristic_force_density": 1, + "characteristic_length": 1 } }, "boundary_conditions": { diff --git a/optimizations/shape-trajectory-surface-opt-new/target.json b/optimizations/shape-trajectory-surface-opt-new/target.json index 084c2ad..571f86a 100644 --- a/optimizations/shape-trajectory-surface-opt-new/target.json +++ b/optimizations/shape-trajectory-surface-opt-new/target.json @@ -91,13 +91,30 @@ }, "solver": { "linear": { - "solver": ["Eigen::PardisoLDLT","Eigen::SimplicialLDLT"] + "solver": [ + "Eigen::PardisoLDLT", + "Eigen::SimplicialLDLT" + ] }, "nonlinear": { - "grad_norm": 1e-8 + "norm_type": "Euclidean", + "first_grad_norm_tol": 1.0000000000000001e-11, + "grad_norm_tol": 1e-09, + "x_delta_tol": 0.0, + "advanced": { + "f_delta_tol": 0.0, + "derivative_along_delta_x_tol": 0.0 + }, + "line_search": { + "use_grad_norm_tol": 1e-07 + } }, "contact": { "barrier_stiffness": 100000000.0 + }, + "advanced": { + "characteristic_force_density": 1, + "characteristic_length": 1 } }, "boundary_conditions": { diff --git a/optimizations/topology-opt/run.json b/optimizations/topology-opt/run.json index 0bdb398..bc95aca 100644 --- a/optimizations/topology-opt/run.json +++ b/optimizations/topology-opt/run.json @@ -45,18 +45,30 @@ "solver": { "nonlinear": { "solver": "MMA", - "grad_norm": 0.0255, "box_constraints": { "bounds": [ - 1e-2, + 0.01, 1 ], "max_change": 1 }, "line_search": { - "method": "None" + "method": "None", + "use_grad_norm_tol": 1e-06 }, - "max_iterations": 21 + "max_iterations": 21, + "norm_type": "Euclidean", + "first_grad_norm_tol": 1e-10, + "grad_norm_tol": 0.0255, + "x_delta_tol": 0, + "advanced": { + "f_delta_tol": 0, + "derivative_along_delta_x_tol": 0 + } + }, + "advanced": { + "characteristic_force_density": 1, + "characteristic_length": 1 } }, "functionals": [ diff --git a/optimizations/topology-opt/state.json b/optimizations/topology-opt/state.json index 3f1934c..ab97793 100644 --- a/optimizations/topology-opt/state.json +++ b/optimizations/topology-opt/state.json @@ -5,7 +5,7 @@ "volume_selection": 1, "n_refs": 0, "surface_selection": { - "threshold": 1e-4 + "threshold": 0.0001 } } ], @@ -17,7 +17,27 @@ }, "solver": { "linear": { - "solver": ["Eigen::PardisoLDLT", "Eigen::SimplicialLDLT"] + "solver": [ + "Eigen::PardisoLDLT", + "Eigen::SimplicialLDLT" + ] + }, + "advanced": { + "characteristic_force_density": 1, + "characteristic_length": 1 + }, + "nonlinear": { + "norm_type": "Euclidean", + "first_grad_norm_tol": 1e-10, + "grad_norm_tol": 1e-08, + "x_delta_tol": 0, + "advanced": { + "f_delta_tol": 0, + "derivative_along_delta_x_tol": 0 + }, + "line_search": { + "use_grad_norm_tol": 1e-06 + } } }, "boundary_conditions": { diff --git a/optimizations/topology-opt/state1.json b/optimizations/topology-opt/state1.json index a8945fc..47d2e78 100644 --- a/optimizations/topology-opt/state1.json +++ b/optimizations/topology-opt/state1.json @@ -5,7 +5,7 @@ "volume_selection": 1, "n_refs": 0, "surface_selection": { - "threshold": 1e-4 + "threshold": 0.0001 } } ], @@ -17,7 +17,27 @@ }, "solver": { "linear": { - "solver": ["Eigen::PardisoLDLT", "Eigen::SimplicialLDLT"] + "solver": [ + "Eigen::PardisoLDLT", + "Eigen::SimplicialLDLT" + ] + }, + "advanced": { + "characteristic_force_density": 1, + "characteristic_length": 1 + }, + "nonlinear": { + "norm_type": "Euclidean", + "first_grad_norm_tol": 1e-10, + "grad_norm_tol": 1e-08, + "x_delta_tol": 0, + "advanced": { + "f_delta_tol": 0, + "derivative_along_delta_x_tol": 0 + }, + "line_search": { + "use_grad_norm_tol": 1e-06 + } } }, "boundary_conditions": { diff --git a/optimizations/topology-opt/state2.json b/optimizations/topology-opt/state2.json index 27e7022..bc17c26 100644 --- a/optimizations/topology-opt/state2.json +++ b/optimizations/topology-opt/state2.json @@ -5,7 +5,7 @@ "volume_selection": 1, "n_refs": 0, "surface_selection": { - "threshold": 1e-4 + "threshold": 0.0001 } } ], @@ -17,7 +17,27 @@ }, "solver": { "linear": { - "solver": ["Eigen::PardisoLDLT", "Eigen::SimplicialLDLT"] + "solver": [ + "Eigen::PardisoLDLT", + "Eigen::SimplicialLDLT" + ] + }, + "advanced": { + "characteristic_force_density": 1, + "characteristic_length": 1 + }, + "nonlinear": { + "norm_type": "Euclidean", + "first_grad_norm_tol": 1e-10, + "grad_norm_tol": 1e-08, + "x_delta_tol": 0, + "advanced": { + "f_delta_tol": 0, + "derivative_along_delta_x_tol": 0 + }, + "line_search": { + "use_grad_norm_tol": 1e-06 + } } }, "boundary_conditions": {