I finally managed to try your approach
for my plane stress problem.
But unfortunately I got a problem with
it.
When defining the 3D deformation gradient,
I have to add a [2x2] - matrix to a [3x3]- matrix. To work around this
problem I tried to rewrite the displacement gradient to a [3x3] - matrix.
So instead of
To test the approach, I created a little
test-script with a simple beam and a force. The calculation works with
this work around, but the deformation seems something strange. I think
I did a mistake by accessing the matrix-elements of the displacement gradient,
but I'm not sure about it.
Can you, or anyone else, help me with
my problem?
import getfem as gf
import numpy as np
# Parameter
l = 100
h = 10
b = 1.5
size = 1
E = 203000
nu = 0.3
Lambda = (E*nu)/(1-pow(nu,2))
mu = E/(1+nu)
lawname = 'SaintVenant Kirchhoff'
# fixed support left side
md.add_initialized_data('DirichletData1',
[0,0])
md.add_Dirichlet_condition_with_multipliers(mim,
'u', mfu, 1, 'DirichletData1')
# force on rigth side
md.add_initialized_data('VolumicData',
[0,0])
md.add_source_term_brick(mim, 'u', 'VolumicData')
md.add_Dirichlet_condition_with_multipliers(mim,
'u', mfu, 2, 'VolumicData')
# force array
F = np.array([[0,-4], [0,-10], [0,-15],
[0,-25], [0,-35], [0,-50]])
nbstep = F.shape[0]
#iterative calc
for step in range(0, nbstep):
print(step)
md.set_variable('VolumicData',
[F[step, 0],F[step,1]])
md.solve('noisy', 'max_iter',
50)
U = md.variable('u')
s1 = gf.Slice(('boundary',),
mfu, 4)
s1.export_to_vtk('test_%d.vtk'
% step, 'ascii', mfu, U , 'Displacement')
To define a hyperelastic material law for a plane stress
problem, the easiest way is to add one extra variable representing the
out of plane strain. If mf1 is a scalar fem and mf2 is a vector fem with
2 components, then you can simply do:
On Wed, Jan 16, 2019 at 9:40 PM Yves Renard <address@hidden>
wrote:
Dear Jena,
For an hyperelastic law, the weak form of the static elastic problem can
be written in the weak form language
"Def F := Id(meshdim)+Grad_u; (F * S) : Grad_test_u"
for u the displacement, F the deformation gradient and S has to contains
the _expression_ of the second Piola-Kirchhoff stress tensor (you can of
course express it in term of PK1 also). For instance for a St Venant Kirchhoff
law, you can write
"Def F := Id(meshdim)+Grad_u; Def E := 0.5*(F'*F-Id(meshdim));
(F * (lambda*Trace(E)+2*mu*E)) : Grad_test_u"
where E will be the Green Lagrange deformation tensor and lambda, mu the
Lamé coefficients.
So, if you have the _expression_ of your law in plane stress, it should not
be very difficult to implement it. But of course you need the _expression_
of the law in plane stress. On the construction itself of plane stress
hyperelastic law, now, I don't know a good reference, unfortunately.
Best regards,
Yves
----- Original Message -----
From: "Moritz Jena" <address@hidden>
To: "yves renard" <address@hidden>
Cc: "getfem-users" <address@hidden>
Sent: Wednesday, January 16, 2019 2:17:01 PM
Subject: Antwort: Re: [Getfem-users] 2D nonlinear plane stress
Hello Yves,
thank you for your answer.
I'm afraid I'm not into the topic weak form language and I'm not sure
where to start with this problem.
I looked at the chapter in the documentation, however I don't know how
to
describe a plane stress material model with it.
I also studied the examples, that come with the MATLAB-Interface. There
are a few examples, how to declare a material model with this weak form
expressions. But I still don't know, how to build this expressions.
Can you give me a approach for this problem or where I can find
expressions for such a problem? Is there any literature that you
can
recommend?
No, unfortunately, plane stress versions of Hyperelastic laws has not been
implemented yet.
I would not be so difficult, but as to be made. If you need one in
particular and have the _expression_, it is no so difficult to describe it
with the weak form language.
Best regards,
Yves
----- Original Message -----
From: "Moritz Jena" <address@hidden>
To: "getfem-users" <address@hidden>
Sent: Tuesday, January 8, 2019 4:11:48 PM
Subject: [Getfem-users] 2D nonlinear plane stress
Dear GetFEM-Users,
I use the MATLAB-Interface of GetFEM to create a program that
automatically solves different models of the same problem.
The problem is three-dimensional, but can be reduced by plain stress
approximation. (to reduce computing time).
I want to define a nonlinear material with the brick
gf_model_set(model
M, 'add nonlinear elasticity brick',
[...])
For this nonlinear command it is specified in the description, that in
2D
always plain strain is used.
So my question is: Is there a way to define a nonlinear material with the
plain stress approximation? Or is it planned to install such an option
in
a future release?