KratosMultiphysics / Kratos

Kratos Multiphysics (A.K.A Kratos) is a framework for building parallel multi-disciplinary simulation software. Modularity, extensibility and HPC are the main objectives. Kratos has BSD license and is written in C++ with extensive Python interface.
https://kratosmultiphysics.github.io/Kratos/
Other
990 stars 243 forks source link

Suspicious sensitivities with shell optimizer #6576

Open brendankeith opened 4 years ago

brendankeith commented 4 years ago

I have set up a shape optimization problem based on the shape optimization example https://github.com/KratosMultiphysics/Examples/tree/master/shape_optimization/02_Strain_Energy_Minimization_3D_Shell. I used a longer shell and, instead of applying a point load, I am looking at a distributed load which grows from one end of the shell to the other.

The sensitivities I am getting back are very suspicious and lead to a somwhat crinkled non-symmetric shape (see attached figures). I am wondering what I am doing wrong.

Note that included is a picture of the initial sensitivities coming from the shape optimization example. Also, the objective function doesn't decrease throughout the optimization process.

@marcnunezc @armingeiser @MFusseder

data.zip

marcnunezc commented 4 years ago

Hi!

I will just add the images and the table in the post so that they are easier to see.

This is the problem @brendankeith is trying to solve, one snapshot of the sensitivities and the final shape one gets.

begin_shape end_shape

sensitivites_bad

If we take a look at the objective function, it does not go down:

 itr,            f,    df_abs[%],    df_rel[%],      norm_df,    step_size,               time_stamp

   1,  1.27204E+09,  0.00000E+00,  0.00000E+00,  8.65154E+07,  1.00000E+00, Fri Mar 20 12:02:05 2020

   2,  7.21772E+10,  5.57411E+03,  5.57411E+03,  6.73333E+09,  1.00000E+00, Fri Mar 20 12:02:05 2020

   3,  3.65729E+12,  2.87413E+05,  2.81839E+05,  2.90892E+11,  1.00000E+00, Fri Mar 20 12:02:06 2020

   4,  1.16725E+14,  9.17605E+06,  8.88864E+06,  4.74951E+11,  1.00000E+00, Fri Mar 20 12:02:06 2020

   5,  1.59801E+18,  1.25625E+11,  1.25616E+11,  1.42290E+15,  1.00000E+00, Fri Mar 20 12:02:06 2020

   6,  6.42661E+15,  5.05219E+08, -1.25120E+11,  8.34923E+13,  1.00000E+00, Fri Mar 20 12:02:07 2020

   7,  2.84295E+16,  2.23494E+09,  1.72972E+09,  3.42314E+13,  1.00000E+00, Fri Mar 20 12:02:07 2020

   8,  2.53899E+16,  1.99599E+09, -2.38948E+08,  6.87294E+13,  1.00000E+00, Fri Mar 20 12:02:07 2020

   9,  6.17331E+17,  4.85306E+10,  4.65346E+10,  5.62109E+14,  1.00000E+00, Fri Mar 20 12:02:08 2020

  10,  2.86949E+15,  2.25581E+08, -4.83050E+10,  2.91385E+12,  1.00000E+00, Fri Mar 20 12:02:08 2020
armingeiser commented 4 years ago

@brendankeith What element types are you using? Can you compare the mdpa files and try with the same as in the test case?

brendankeith commented 4 years ago

Hi @armingeiser I was using ShellThinElementCorotational3D3N, however, in the example you are using ShellThinElement3D3N. I made the change and it seems to have fixed everything. THANKS!

image

armingeiser commented 4 years ago

@brendankeith There is an error missing in the code, as Corotational elements do not work for sensitivity analysis...