convergence of ShellMITC4 element
Moderators: silvia, selimgunay, Moderators
convergence of ShellMITC4 element
Hello
I ran a patch test to check the accuracy of the ShellMITC4 element. The reference of the patch test is according to the example 1 of the paper: Dvorkin & Bathe, A continuum mechanics based four node shell element for general nonlinear analysis. The paper shows that if the element works, the patch test should reproduce the linear distribution of curvature for h=1 & 1e-3. However, it only works if the thickness = 1. If the thickness=1e-3, the Newton solver diverges. I think there is a bug in linearization of this element. Below is the code for the patch test
model basic -ndm 3 -ndf 6
section ElasticMembranePlateSection 1 2.1e6 0.3 1.0e-3 0.0
node 1 0.0 0.0 0.0
node 2 10.0 0.0 0.0
node 3 10.0 10.0 0.0
node 4 0.0 10.0 0.0
element ShellMITC4 1 1 2 3 4 1
fix 1 1 0 1 0 1 0
fix 4 1 1 1 0 1 0
pattern Plain 1 Linear { ; # define LoadPattern 1. impose load in a linear manner
load 2 0.0 0.0 0.0 0.0 1.0 0.0
load 3 0.0 0.0 0.0 0.0 1.0 0.0
}
numberer Plain
analysis Static
test RelativeNormUnbalance 1.0e-12 10 1 2
analyze 1
print -node; # print all nodes
I ran a patch test to check the accuracy of the ShellMITC4 element. The reference of the patch test is according to the example 1 of the paper: Dvorkin & Bathe, A continuum mechanics based four node shell element for general nonlinear analysis. The paper shows that if the element works, the patch test should reproduce the linear distribution of curvature for h=1 & 1e-3. However, it only works if the thickness = 1. If the thickness=1e-3, the Newton solver diverges. I think there is a bug in linearization of this element. Below is the code for the patch test
model basic -ndm 3 -ndf 6
section ElasticMembranePlateSection 1 2.1e6 0.3 1.0e-3 0.0
node 1 0.0 0.0 0.0
node 2 10.0 0.0 0.0
node 3 10.0 10.0 0.0
node 4 0.0 10.0 0.0
element ShellMITC4 1 1 2 3 4 1
fix 1 1 0 1 0 1 0
fix 4 1 1 1 0 1 0
pattern Plain 1 Linear { ; # define LoadPattern 1. impose load in a linear manner
load 2 0.0 0.0 0.0 0.0 1.0 0.0
load 3 0.0 0.0 0.0 0.0 1.0 0.0
}
numberer Plain
analysis Static
test RelativeNormUnbalance 1.0e-12 10 1 2
analyze 1
print -node; # print all nodes
Re: convergence of ShellMITC4 element
thanks .. i will look into it .. in the meantime the ShellDKGQ seems to work for the test.
Re: convergence of ShellMITC4 element
You're correct, the ShellDKGQ also works robustly for other tests as well. Nevertheless, in the literature, MITC4 is claimed to be more superior in terms of accuracy. I can help get debug it, if you point me to some material containing explicit algorithm, equations, ...
Best regards
Best regards
Re: convergence of ShellMITC4 element
Hi
I would like to report that starting from r5141, this commit below destroyed the convergence of ShellMITC4 element:
void
ShellMITC4::formResidAndTangent( int tang_flag )
{
...
//start Yuli Huang (yulihuang@gmail.com) & Xinzheng Lu (luxz@tsinghua.edu.cn)
updateBasis( ); // I'm not quite sure why those guys put it here
//end Yuli Huang (yulihuang@gmail.com) & Xinzheng Lu (luxz@tsinghua.edu.cn)
...
}
Decomment this line make the above example works, even with small thickness (h=1.0e-3). I'm not quite sure why this line is added as such. Because except the geometry is nonlinear, there is no need to update the basis function at node.
I would like to report that starting from r5141, this commit below destroyed the convergence of ShellMITC4 element:
void
ShellMITC4::formResidAndTangent( int tang_flag )
{
...
//start Yuli Huang (yulihuang@gmail.com) & Xinzheng Lu (luxz@tsinghua.edu.cn)
updateBasis( ); // I'm not quite sure why those guys put it here
//end Yuli Huang (yulihuang@gmail.com) & Xinzheng Lu (luxz@tsinghua.edu.cn)
...
}
Decomment this line make the above example works, even with small thickness (h=1.0e-3). I'm not quite sure why this line is added as such. Because except the geometry is nonlinear, there is no need to update the basis function at node.
Re: convergence of ShellMITC4 element
if you modified the code at the head of the repository, can you send me the Shell code you have .. reason is that when i modified the code so that updateBasis is an option it still failed to converge for your problem for both cases of method being called and method not called.
if you just used rev prior to 5141 let me know.
thanks
frank
if you just used rev prior to 5141 let me know.
thanks
frank
Re: convergence of ShellMITC4 element
You're right. I made a mistake. For this example I can get convergence only with tol > 1e-08 (test RelativeNormUnbalance 1.0e-8 10 1 2). For the other example, I can get convergence with lower tolerance, but it's with higher thickness. This is still skeptical that that code segment destroyed the element.
P/S: my code is the latest one removing the one added at r5141.
P/S: my code is the latest one removing the one added at r5141.