getfem-users
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Getfem-users] mesh_deformation


From: Zhenghuai Guo
Subject: Re: [Getfem-users] mesh_deformation
Date: Mon, 15 Apr 2019 23:57:45 +0000

Hi Andriy,

 

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

Can you please advise?  Thank you

 

 

 

From: Zhenghuai Guo
Sent: Monday, April 15, 2019 8:18 PM
To: address@hidden
Cc: address@hidden
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:

getfem::add_isotropic_linearized_elasticity_brick(model, mim_1, "u_1", "lambda_1", "mu_1");

 

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");

 getfem::add_rigid_obstacle_to_large_sliding_contact_brick(model, ind, "y", N);

 

Linear elasticity brick is used:

getfem::add_isotropic_linearized_elasticity_brick(model, mim_1, "u_1", "lambda_1", "mu_1");

 

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:

getfem::add_isotropic_linearized_elasticity_brick(model, mim_1, "u_1", "lambda_1", "mu_1");

getfem::add_isotropic_linearized_elasticity_brick(model, mim_2, "u_2", "lambda_1", "mu_1");

 

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

 

 

 

From: Andriy Andreykiv <address@hidden>
Sent: Monday, February 25, 2019 7:53 AM
To: Zhenghuai Guo <address@hidden>
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)))";

  getfem::add_linear_term(model, mim,"("+clambda+"*Trace(Grad_u)*Id(qdim(u)) +"+ cmu+"*(Grad_u+Grad_u')):Grad_Test_u" );

 

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

 

 


reply via email to

[Prev in Thread] Current Thread [Next in Thread]