Hemisphere-point loads

Numerical methods and mathematical models of Elmer
raback
Site Admin
Posts: 4812
Joined: 22 Aug 2009, 11:57
Antispam: Yes
Location: Espoo, Finland
Contact:

Re: Hemisphere-point loads

Post by raback »

When was your Elmer version compiled?
mdudek
Posts: 9
Joined: 03 Mar 2021, 02:49
Antispam: Yes

Re: Hemisphere-point loads

Post by mdudek »

I think maybe 2 weeks ago. I install it from the repository. I will update the solver and try again.
raback
Site Admin
Posts: 4812
Joined: 22 Aug 2009, 11:57
Antispam: Yes
Location: Espoo, Finland
Contact:

Re: Hemisphere-point loads

Post by raback »

Hi

Ok, that is new enough. Nothing has changed in this respect in two weeks.

What I do in this kind of cases is settle some higher output level, e.g. "Max Output Level = 12", and redirect the std output to a file. Then comparing the output with exactly the same case from these two sources with some nice compare tool (I use meld) often reveals where the discrepancy lies.

-Peter
kevinarden
Posts: 2237
Joined: 25 Jan 2019, 01:28
Antispam: Yes

Re: Hemisphere-point loads

Post by kevinarden »

These results are from my simulation
mdudek
Posts: 9
Joined: 03 Mar 2021, 02:49
Antispam: Yes

Re: Hemisphere-point loads

Post by mdudek »

I have probably found the issue why I am getting incorrect results. In your case @kevinarden you have a file called mesh.director to specify the normal vector. Could you please tell me how can I make such a file from my mesh?
kevinarden
Posts: 2237
Joined: 25 Jan 2019, 01:28
Antispam: Yes

Re: Hemisphere-point loads

Post by kevinarden »

Mesh director is a file that defines a vector from the origin of the model through the node in the direction normal to the shell. In the case of a sphere with the origin at the center the vector for each node is the same as the coordinate.

the mesh.node file has a body ID in it
1 -1 10 -2.11282521885e-15 3.40724044785e-13
2 -1 6.12323399574e-16 -1.49975978266e-31 10
3 -1 0 10 0

so the -1 can be removed to make the director file, in this case, I also divided by 10 to make it a unit vector but that is not required.
1 1 0 0
2 0 0 1
3 0 1 0
mika
Posts: 230
Joined: 15 Sep 2009, 07:44

Re: Hemisphere-point loads

Post by mika »

Hi,

A general trouble with getting accurate director data is that Elmer doesn't obtain geometry data directly from a geometric model, since only mesh files are read. Thus there is no immediate way to extract the content of mesh.director but the user has to create it somehow. I have written a simple code for creating mesh.director in simple special cases, but this hasn't been made open source yet. When the geometry is simple, one could also consider the strategy demonstrated in the test

https://github.com/ElmerCSC/elmerfem/tr ... rmalSolver

for generating accurate director data. Then one doesn't need to write mesh.director, but an Elmer variable 'Director' is solved and gives the normal field. A small modification of the solver code

https://github.com/ElmerCSC/elmerfem/bl ... Solver.F90

would of course be needed here. For a part of a sphere, with the centre point for example at (1,1,1), one could modify the source file to have the lines

Code: Select all

Normal(1) = SUM(Nodes % x(1:n) * Basis(1:n)) - 1.0d0
Normal(2) = SUM(Nodes % y(1:n) * Basis(1:n)) - 1.0d0
Normal(3) = SUM(Nodes % z(1:n) * Basis(1:n)) - 1.0d0
Normal = Normal/sqrt(SUM(Normal(:)**2))
and then proceed as in the test.I mention that if neither mesh.director nor 'Director' is available, Elmer computes the director from the facet surface, which may lead to large errors. For plate cases this may however be sufficient. Using accurate director data is beneficial for accuracy in general.
kevinarden wrote: 16 Mar 2021, 13:18 I had to use a much finer mesh in Elmer to get the correct result. A course mesh as defined in the benchmark did not produce good results in Elmer.

I have seen this in many of the test cases I have ran. I believe the commercial codes have much improved element formulations. Normally in Elmer i would also use higher order elements, but ShellSolver does not support.
One may indeed observe that the shell solver may need an additional mesh refinement in comparison with some other shell finite elements to capture inextensional deformations of a doubly curved shell. We have been somewhat conservative in making variational crimes (that is, tricks to alleviate locking) to ensure better stability for membrane-dominated deformations. Hopefully we can identify better modifications and improve the shell solver in future, probably having also higher-order versions available.

Best regards,
Mika
spolanski
Posts: 2
Joined: 19 Mar 2021, 15:27
Antispam: Yes

Re: Hemisphere-point loads

Post by spolanski »

Hello Mika and Kevinarden,

Thank you for quick response in this topic. I am working with mdudek to make that working.

I wrote a script which computes the mesh.director file for the example of hemisphere. It actually does what kevinarden described in the latest response. It works fine for the mesh and sif file delivered by kevinarden, but when I run it with different mesh then I see a lot of warnings:

WARNING:: LinesOfCurvatureFrame: Possibly very rough geometry model used

which is very strange because the mesh looks almost the same as the one used by kevinarden. Additionally to that, the results are not correct. My feeling is that we are still missing something. Would you be that kind to look into files attach to see what might be wrong with it?

With regards to computation of shell normals - I think it would be nice to compute them from CAD geometry. We use Salome to build everything, so it might not be that hard to create a script which computes normals for a given mesh and save it as mesh.director file. If that works then we will share it with Elmer community
Attachments
hemispherical.tar.gz
(285.34 KiB) Downloaded 163 times
raback
Site Admin
Posts: 4812
Joined: 22 Aug 2009, 11:57
Antispam: Yes
Location: Espoo, Finland
Contact:

Re: Hemisphere-point loads

Post by raback »

Hi,

There could actually already be some code that is used to identify cylinder parameters when a set of nodes are given. Similar could be maybe made for sphere surface. Then one can construct an exact direction without the user having to give the origin of sphere or center of axis for a cylinder. The user would just add the information that the surface is part of sphere/cylinder.

Would this kind of feature be helpful?

-Peter
spolanski
Posts: 2
Joined: 19 Mar 2021, 15:27
Antispam: Yes

Re: Hemisphere-point loads

Post by spolanski »

Hello All,

Thank you very much for the help. It works now.

Here is the way it works in case someone searches for advice on how to model shells with normal solver:
1. I modified the CylinderNormalSolver.F90 so it calculates the normals of the quarter of the hemisphere. It is called now SphereNormalSolver.f90
2. The .f90 file was compiled with elmerf90 SphereNormalSolver.f90 -o SphereNormalSolver
3. The Procedure = "SphereNormalSolver" "NormalSolver" has been added to the .sif file
4. it was run as usual with ElmerSolver command

Once again, thank you for your help.
Attachments
elmer_hemisphere.tar.gz
(244.62 KiB) Downloaded 155 times
Post Reply