getfem-users
[Top][All Lists]

## Re: [Getfem-users] mesh_deformation

 From: Andriy Andreykiv Subject: Re: [Getfem-users] mesh_deformation Date: Tue, 16 Apr 2019 15:46:10 +0200

Dear Zhenghuai Guo,

I have little experience with Getfem contact bricks, but I can suggest the following.
You don't have a convergence problem, but a solver failure due to singular stiffness matrix. This can happen
due to missing or too low integration method, missing structural stiffness, rigid body modes, etc.
So, I suggest first try to remove the contact and see if you get this problem. If everything is correct you should get
bottom mesh with zero deformation and top mesh overlapping with it. If you still get solver failure, you need to investigate
the points I mentioned.
I added Yves and Konstantinos, so that you can kindly ask them to review your contact application.

Best regards,
Andriy

On Tue, 16 Apr 2019 at 01:57, Zhenghuai Guo <address@hidden> wrote:

Hi Andriy,

Following my previous email, the case 3 always gives errors :

From: Zhenghuai Guo
Sent: Monday, April 15, 2019 8:18 PM
Subject: RE: [Getfem-users] mesh_deformation

Hi Andriy,

Following your email on February as below. I tried to start from simple case to first achieve contact between two mesh with static linear elasticity. I still couldn’t do it and hope you can advise to me. Following is what I have done:

1. Case 1: static linear elastic, one mesh, no contact

This is an easy case. The mesh is as below picture. The left and right and bottom are prescribed by add_normal_Dirichlet_condition_with_multipliers, the defined as zero normal values.

Linear elasticity brick is used:

Then, the top of the mesh is translated downwards by -0.01:

getfem::add_Dirichlet_condition_with_multipliers(model, mim_1, "u_1", mf_u_1, boundary_top_1,"traslation_value" );

It runs good, no problem

1. Case 2: static linear elastic, one mesh, contact with rigid obstacle on bottom

The mesh is as below picture. The left and right are prescribed by add_normal_Dirichlet_condition_with_multipliers, the defined as zero normal values.

The bottom is rigid obstacle.  Contact is defined as:

scalar_type release_dist = 1;

size_type ind;

ind = getfem::add_integral_large_sliding_contact_brick_raytracing(model, "1", release_dist, "0", "1", false);

getfem::add_contact_boundary_to_large_sliding_contact_brick(model,ind,  mim_contact_1, boundary_bot_1, true, true, "u_1", "pre_mflambda_1");

Linear elasticity brick is used:

Then, the top of the mesh is translated downwards by -0.01:

getfem::add_Dirichlet_condition_with_multipliers(model, mim_1, "u_1", mf_u_1, boundary_top_1,"traslation_value" );

Again, it runs good, no problem

1. Case 3: static linear elastic, two meshes, contact between the meshes

The meshes are as below picture. The left and right and bottom are prescribed by add_normal_Dirichlet_condition_with_multipliers, the defined as zero normal values

Contact is defined between two meshes as:

scalar_type release_dist = 1;

size_type ind;

ind = getfem::add_integral_large_sliding_contact_brick_raytracing(model, "1", release_dist, "0", "1", false);

getfem::add_contact_boundary_to_large_sliding_contact_brick(model,ind,  mim_contact_1, boundary_bot_1, true, true, "u_1", "pre_mflambda_1");

getfem::add_contact_boundary_to_large_sliding_contact_brick(model,ind,  mim_contact_2, boundary_top_2, true, true, "u_2", "pre_mflambda_2");

Linear elasticity brick is used:

Then, the top of the top mesh is translated downwards by -0.01:

getfem::add_Dirichlet_condition_with_multipliers(model, mim_1, "u_1", mf_u_1, boundary_top_1,"traslation_value" );

This case always can not converge and can’t run through.

I attached the codes for the case three. Could you please give some advices?

Thank you very much

Regards

Zhenghuai Guo

Sent: Monday, February 25, 2019 7:53 AM
Subject: Re: [Getfem-users] mesh_deformation

Dear Zhenghuai Guo,

Yes, you can model all those steps with Getfem.

If your elasticity coefficients don't even depend on stress, modelling this process is much easier.

All you need to do is to update them every step.

I would suggest that you build this model in stages, -  from simple to the complete one.

On the first run just don't model any contact at all and replace rigid obstacle with boundary conditions.

Then add the contact between the meshes, then for the obstacles, than start cyclically updating elastic properties.

Best regards,

Andriy

On Sat, 16 Feb 2019 at 08:40, Zhenghuai Guo <address@hidden> wrote:

Hi Andriy,

Thank you for the help. Sorry I have been not clear. I was trying to run some simple cases against theoretical solution and  learn the getfem. Looks like adding a point source is not easy for me. I would put the point source problem on the side for now.

What I eventually want to do is the follows:

1. Suppose there are two meshes A and B as below picture. The left and bottom sides are a fixed and rigid obstacles.

The gap between the two meshes can be consider zero.

1. A hydraulic pressure is applied from the top to the mesh A. Basically, I think this can be implemented by add_normal_source_term_brick.
2. To the right side of the meshes , there is also a hydraulic pressure applied.
3. Linear elasticity is applied. But, the elasticity coefficients cmu and clambda are functions of time. It looks like these:

const std::string clambda="nu/((1+nu)*(1-2*nu))*E*Ev/(Ev+E*(1-exp(-Ev/yv*t)))";

const std::string cmu="1/(2*(1+nu))*E*Ev/(Ev+E*(1-exp(-Ev/yv*t)))";

where nu, E, Ev, yv are some constants.

1. The friction between two meshes are considered. The friction between the mesh and the obstacles can be considered or not.
2. Then after applied the pressure, at each time step I would like to calculate the area or volumetric change of the two meshes.

In the case of an unity mesh, the displacement of the initial elasticity at time step 0 is of the scale of 1E-4 and afterwards the strain change rate is about 1E-9/per second.

Do you think it is some I can achieve with getfem? Could you please advise?

Thank you very much

Regards

Zhenghuai Guo