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
1.03k stars 245 forks source link

Stress and displacement calculation for Shells #5034

Open emanujoy opened 5 years ago

emanujoy commented 5 years ago

Hi, @e-dub and me are testing some simple shells using the element "Shell thick corotational". the easiest example is a shell loaded on one side with pure tension and fully constrained (disp. and rot.) on the opposite side. The load is applied on points that divide the loaded edge in 20 parts. The Mesh is quadratic structured and for each loaded point corresponds also a node of mesh. Assuming that the MDPA file is correctly written (see figure), the results coming from paraview are not plausible. Load

Here the von Mises stress VM stress Isotropic

Here Y displacement Displacement Y Isotropic

As you can see, stress and consequently displacement are concentrated on the outside corners and this is not plausible.

What could the cause of the problem be? Kratos calculation for shells?

loumalouomega commented 5 years ago

In GiD is similar the result?, we had problems of GP extrapolation on the past. (for VTK the values are extrapolated by Kratos)

emanujoy commented 5 years ago

Hi, Thanks for the answer.

Sadly, due to unknown reasons i cannot postprocess with GID, i get always the error: Error reading file '/home/emanuele/DesOpt/Models/Test_Shell.gid/Test_Shell.post.bin': : unexpected end of file

: unexpected end of file . Anyway, i checked the displacement results using Python3, and paraview shows the truth. I think the problem might be related to the loads: the Load, as previously mentioned, is located on geometrical points that divide one edge of the shell in 20 parts. Each point corresponds also to one node of the mesh (see figures). ![Points loaded mesh](https://user-images.githubusercontent.com/48864719/58892386-65d05000-86ee-11e9-8125-9dcc6984c1ea.jpg) ![Nodes points](https://user-images.githubusercontent.com/48864719/58893311-30c4fd00-86f0-11e9-9ea3-d49ef21fe497.png) - Am I loading in the proper way the shell, in order to obtain pure tension stress? - Is there another way to load a line for the "Shell thick corotational" element? i cannot find the way on GID. I also tried to load manually the points in the MDPA file, but the result is the same, I always obtain a higher stress on the points on the corners, as if they were loaded twice. In the JSON file under the load conditions, the assigned groups corresponds to the right group in the MDPA, but in line 69 we find "assign_vector_by_direction_to_condition_process", is it right? `"loads_process_list" : [{ "python_module" : "assign_vector_by_direction_to_condition_process", "kratos_module" : "KratosMultiphysics", "check" : "DirectorVectorNonZero direction", "Parameters" : { "model_part_name" : "Structure.PointLoad3D_Load_on_points_Auto1", "variable_name" : "POINT_LOAD", "modulus" : 1000.0, "direction" : [0.0,1,0.0], "interval" : [0.0,"End"]` Attached you may find the ZIP containing the full model and files. [Test_Shell.gid.zip](https://github.com/KratosMultiphysics/Kratos/files/3253309/Test_Shell.gid.zip)
loumalouomega commented 5 years ago

@jginternational please, add to shells the possibility to add line loads (we need to add line loads on 3D, but that is easy)

jginternational commented 5 years ago

Hi, First of all, the postprocess issue the message: unexpected end of file fd:14: unexpected end of file means that the calculation did not end the results file. In this case, as your results are in a binary file, it's difficult to know. Try to run it with output mode ASCII, and wait to the calculation to end.

anyway, I can see that the VTK output is written ok, so open the model, go to postprocess and drag&drop vtk_output/computing_domain_0_1.vtk into GiD so you can see the results: image image

emanujoy commented 5 years ago

@jginternational Thanks for the answer, it works.

Getting back to the original problems, after seeing the results, why do i get results that are not plausible according to the loads? Am i loading the shell in the wrong way? Are JSON and MDPA correct according to the problem?

Thanks.

loumalouomega commented 5 years ago

Wel, I did not implement this shell, but:

jginternational commented 5 years ago

Thats out of my hands, Maybe @KratosMultiphysics/structural-mechanics can help.

Answering to @loumalouomega , elements and loads are unrelated. Elements define wich nodal conditions can be applied, Loads are always available.

So if you want to implement a Line load for 3D , add it to Conditions.xml (And it's process should be in Process.xml) but it will be available for any element in 3D

jginternational commented 5 years ago

As a comment you can try it using the Solid Application. It has Force over lines as linear load

emanujoy commented 5 years ago

Wel, I did not implement this shell, but:

* Line loads on 3D doesn't exist right now

* Point loads can be reason. Try to put half load on the borders

Thank you, it seems it works. It would be nice, though, to know the reason why this is necessary and to solve the problem in a general way. For complex structures, for instance, it might be difficult to select each point that needs half load.

As a comment you can try it using the Solid Application. It has Force over lines as linear load

Thanks, but fur my purpose i have to use only anisotropic shells.

emanujoy commented 5 years ago

Hi, just another question related to shells using -structural3D-. Using the element: Shell Thick corotational, if i try to run the simulation with a structured mesh Q8, i get the error saying that the Q8 element is not available for my group on part(). Am i missing something or this function has not been implemented yet? Thanks

philbucher commented 5 years ago

There are only shells with linear shape functions in Kratos, no quadratic ones, thats why you get this error

emanujoy commented 5 years ago

There are only linear shells in Kratos, no quadratic ones, thats why you get this error

Thank you.

armingeiser commented 5 years ago

It would be nice, though, to know the reason why this is necessary and to solve the problem in a general way. For complex structures, for instance, it might be difficult to select each point that needs half load.

Even if this might already be solved by #5045:

If you replace line loads with point loads, you can see the point loads as the integral of the line load over half of the line length. That means that a node at the corner only gets contribution from one side, while all others get contribution from two sides.

I agree that this can be tedious for large models (think about non uniform grids...). However it could also be automized using a custom python process that applies point loads along a submodelpart of a line, depending on the size of the line elements.